Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
01.08.2016, 18:13
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
А ткните меня, пожалуйста, в документацию, где описывается порядок проверки констрейнтов и срабатывания триггеров. Наткнулся на то, что CHECK отрабатывает раньше, чем триггер. Удивился. Сервер IB XE3 С уважением, Vasilisk ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 18:19
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
CHECK делается системным триггером. Срабатывает в порядке общей очереди. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 18:26
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Dimitry SibiryakovCHECK делается системным триггеромЗнаю Dimitry SibiryakovСрабатывает в порядке общей очереди.И эту очередь нельзя изменить? Посмотрел RDB$TRIGGERS.RDB$TRIGGER_SEQUENCE. Для всех чеков стоит 0. И, как я понимаю, модификации не подлежит? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 18:44
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
_Vasilisk_И эту очередь нельзя изменить? Отрицательную позицию своим триггерам давать пробовал? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 18:50
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Dimitry SibiryakovОтрицательную позицию своим триггерам давать пробовал?Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, char 29. -. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 18:54
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Значит не судьба. Возможно, триггера с одинаковыми позициями выполняются в алфавитном порядке. Попробуй. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 19:21
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Dimitry SibiryakovВозможноЭто уже осознанное подкладывание себе граблей. Спасибо за помощь. В итоге изменил логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 20:26
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
К слову, ситуация вообще выглядит странной. Мало того, что все остальные констрейнты проверяются после триггеров, а чеки до, так еще и получается, что я в триггере могу нарушить чек-констрейнт для изначально валидных данных, и мне за это ничего не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 20:59
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Считается, что триггера пишут не идиоты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
01.08.2016, 23:35
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
Не знаю, как оно там в IB, но в FB вот так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
причём достаточно давно. Вроде была какая-то возня вокруг этого во времена fb1 (?), но я не помню деталей PS Запись про "BUG #8458" - это со времён IB, не наше. Т.е. по-идее, всё было правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 10:40
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
_Vasilisk_что я в триггере могу нарушить чек-констрейнт для изначально валидных данных, и мне за это ничего не будет. по идее поьзовательские триггера бывают BEFORE UPDATE и AFTER UPDATE при этом AU изменить значение не может и вполне может вызываться после чеков а вот BU может и по идее чеки должны делаться по результатам изменения значений BU-триггерами ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:12
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
hvladНе знаю, как оно там в IB, но в FB вот так:Итак, результаты изысканий DDL Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Код: sql 1.
Server Version: WI-V9.0.3.437 (IB 2009) Server Implementation: InterBase/x86/Windows NT Server Version: WI-V11.0.4.810 (IB XE3) Server Implementation: InterBase/x64/Windows Operation violates CHECK constraint on view or table . Operation violates CHECK constraint INTEG_2 on view or table TEST. Server Version: WI-V2.5.1.26351 Firebird 2.5 Server Implementation: Firebird/x86/Windows NT1 record(s) was(were) inserted into TEST Просто нет слов ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:23
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
_Vasilisk_, а назначить этот триггер не BU а AU в интербейзе позволят ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:31
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Ariochа назначить этот триггер не BU а AU в интербейзе позволят ?Какой триггер? Вы о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:34
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
_Vasilisk_, из вашего скрипта сделать его after insert а не before съест такое интербейз ? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:37
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Arioch, ты сегодня какую-то чепуху несёшь. BEFORE и AFTER триггеры они разные по смыслу. Ничего ты в AFTER триггере подправить уже не сможешь, следовательно констрейну это никак не поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:41
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
Симонов Денис, молодец, возьми с полки пирожок (С) но к самому впросу этот труизм ничего не добавляет, а вопрос был, позволяет ли именно IB создать такой триггер или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:48
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Ariochа вопрос был, позволяет ли именно IB создать такой триггер или нетПозволяет. И какой в нем будет смысл? Модифицировать поля уже поздно ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:49
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Ariochиз вашего скрипта сделать его after insert а не before съест такое интербейз ?Такое никто не съест. Нельзя в AFTER триггере модифицировать поля вставляемой записи ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 15:56
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
_Vasilisk_, продолжайте платить за IB :) PS не удержался, вырвалось ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 17:57
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
_Vasilisk_Позволяет. _Vasilisk_Такое никто не съест. Плюрализм мнений в одной голове ? После приведённого вам примера я от IB чего угодно могу ожидать _Vasilisk_Нельзя в AFTER триггере модифицировать поля вставляемой записи Сами записи м.б. и нет, а вот модифицировать переменные контекста - те самые NEW.xxxx - по моему ранние FB и до-FBшные IB позволяли ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 18:00
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
Arioch, ну значит не скопировали они это исправление из FB. ЕМНИП это правилось ещё в Firebird 1.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 18:20
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
Симонов Денис, Пока не понятно Василиск не пробовал, а у мну IB нет Вот-вот, я же помню что это было, хотя и правилось. И если у них до сих пор чеки не вовремя вызываютсЯ, то может быть они вообще ничего в триггерах не правили. Хотя, конечно, целая пака халявных переменных... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
02.08.2016, 23:26
|
|||
---|---|---|---|
|
|||
CHECK constraint |
|||
#18+
AriochПлюрализм мнений в одной голове ?Вы внятно формулируйте свои желания AriochПока не понятно Василиск не пробовалЧто я не пробовал? Я уже все написал AriochСами записи м.б. и нет, а вот модифицировать переменные контекста - те самые NEW.xxxx - по моему ранние FB и до-FBшные IB позволялиКак раз выполнение INSERT/DELETE/UPDATE не запрешено нигде. А вот модифицировать контекст - только в BEFORE ... |
|||
:
Нравится:
Не нравится:
|
|||
|
03.08.2016, 10:38
|
|||
---|---|---|---|
CHECK constraint |
|||
#18+
не пробовали 19487599 сделать ваш триггер Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и посмотреть позволит ли это IB _Vasilisk_модифицировать контекст - только в BEFORE раньше это было не так, и судя по другому древнему багу в IB - этот тоже могли не исправить ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=40&mobile=1&tid=1562026]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 256ms |
total: | 420ms |
0 / 0 |