Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.013 c
1-1132640185
Frozzen
2005-11-22 09:16
2005.12.18
"свободный" кастинга типов?


4-1129271146
Roughneck
2005-10-14 10:25
2005.12.18
CreateProcessAsUser или CreateProcessWithLogonW


4-1129555422
kolos_rus
2005-10-17 17:23
2005.12.18
Как создать панель на рабочем столе, чтобы она не пере


2-1132662738
JTAG
2005-11-22 15:32
2005.12.18
Ув. Доны подскажите понадобилось считать параметры командной


4-1129487692
Швч
2005-10-16 22:34
2005.12.18
Как вставить рисунок JPG на фон ListView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский