Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

FB SQL проблема с изменением данных   Найти похожие ветки 

 
Труп Васи Доброго ©   (2005-11-28 14:26) [0]

Привет всем живущим!
Стыдно спрашивать, но чего то я дико торможу.
Простая вроде бы задача: не допустить одновременного появления в одном поле разных записей таблицы более одного определённого значения.
Пример: В таблице есть поле, в котором может быть или 0 или 1, количество записей с нулями не ограничено, а вот единица должна быть только одна. При появлении новой единице на месте старой ставится 0. Вот, собственно и всё.
Я естественно засунул это дело в триггер примерно такого содержания:
CREATE TRIGGER MYTABLE_BIU0 FOR MYTABLE
ACTIVE BEFORE INSERT OR UPDATE POSITION 0
AS
begin
 if (new.activ = "1") then
  begin
    update MYTABLE set MYTABLE.activ="0" where (MYTABLE.activ="1");
  end
end

Однако при вставке/изменении происходит ошибка: Too many concurrent executions of the same request.
Как бы это решить?


 
Труп Васи Доброго ©   (2005-11-28 14:34) [1]

Опаньки.. ещё никто не ответил???
Народ, мне срочно надо.


 
Дмитрий_Б ©   (2005-11-28 14:54) [2]

А если так:

update MYTABLE set MYTABLE.activ="0" where (MYTABLE.activ="1") and
    MYTABLE.id <> new.id


 
Труп Васи Доброго ©   (2005-11-28 14:59) [3]

Дмитрий_Б ©   (28.11.05 14:54) [2]
А если так:

Смысла никакого нет, при смене 0 на 0 он вообще должен триггер мимо ушей пропустить!
Хрень какая то! Всё просто обязано работать!


 
wicked ©   (2005-11-28 15:03) [4]


> Простая вроде бы задача: не допустить одновременного появления
> в одном поле разных записей таблицы более одного определённого
> значения.
> Пример: В таблице есть поле, в котором может быть или 0
> или 1, количество записей с нулями не ограничено, а вот
> единица должна быть только одна. При появлении новой единице
> на месте старой ставится 0. Вот, собственно и всё.

предлагаю пересмотреть логику хранения данных - модель не должна допускать излишеств и аномалий данных....
вот, собственно, и всё....


 
Sergey13 ©   (2005-11-28 15:11) [5]

2Труп Васи Доброго ©   (28.11.05 14:26)
Попробуй индекс на это поле повесить.


 
Труп Васи Доброго ©   (2005-11-28 15:19) [6]

Всем спасибо! Нашёл!
Правильный мой триггер! Просто не надо ничего делать по пьяни! Оказалось что я на выходных уже впендюрил такой же триггер, только на апдейт, вот они и грызлись между собой.
Ну идиот, извиняюсь за беспокойство.

wicked ©   (28.11.05 15:03) [4]
предлагаю пересмотреть логику хранения данных

От это ты что-то умное зарядил! Куда уж проще и без излишеств - все нули и одна единица!


 
wicked ©   (2005-11-28 15:27) [7]

> Труп Васи Доброго ©   (28.11.05 15:19) [6]

> От это ты что-то умное зарядил! Куда уж проще и без излишеств
> - все нули и одна единица!

спорить не буду, так как не знаю ПО.... но даже без этого знания вижу способ получше, чем
> все нули и одна единица

но...... каждый грызет свои кактусы по своему....


 
КаПиБаРа ©   (2005-11-29 05:41) [8]

Труп Васи Доброго ©   (28.11.05 15:19) [6]
От это ты что-то умное зарядил! Куда уж проще и без излишеств - все нули и одна единица!


Вариант: хранить в таблице ID активного элемента.



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.023 c
2-1133491380
Максим
2005-12-02 05:43
2005.12.18
Запутался в основах Delphi


14-1133255756
КаПиБаРа
2005-11-29 12:15
2005.12.18
Вы Леви читали? Как вам его книги?


1-1132587568
vecna
2005-11-21 18:39
2005.12.18
Handle + ReadOnly


3-1130535212
Германн
2005-10-29 01:33
2005.12.18
Unavalable resource


14-1132734051
rea
2005-11-23 11:20
2005.12.18
Семинар D2006





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский