|
CHECK constraint
|
|||
---|---|---|---|
#18+
А ткните меня, пожалуйста, в документацию, где описывается порядок проверки констрейнтов и срабатывания триггеров. Наткнулся на то, что CHECK отрабатывает раньше, чем триггер. Удивился. Сервер IB XE3 С уважением, Vasilisk ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:13 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
CHECK делается системным триггером. Срабатывает в порядке общей очереди. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:19 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovCHECK делается системным триггеромЗнаю Dimitry SibiryakovСрабатывает в порядке общей очереди.И эту очередь нельзя изменить? Посмотрел RDB$TRIGGERS.RDB$TRIGGER_SEQUENCE. Для всех чеков стоит 0. И, как я понимаю, модификации не подлежит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:26 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_И эту очередь нельзя изменить? Отрицательную позицию своим триггерам давать пробовал? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:44 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovОтрицательную позицию своим триггерам давать пробовал?Invalid token. Dynamic SQL Error. SQL error code = -104. Token unknown - line 2, char 29. -. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:50 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Значит не судьба. Возможно, триггера с одинаковыми позициями выполняются в алфавитном порядке. Попробуй. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 18:54 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВозможноЭто уже осознанное подкладывание себе граблей. Спасибо за помощь. В итоге изменил логику. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 19:21 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
К слову, ситуация вообще выглядит странной. Мало того, что все остальные констрейнты проверяются после триггеров, а чеки до, так еще и получается, что я в триггере могу нарушить чек-констрейнт для изначально валидных данных, и мне за это ничего не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 20:26 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Считается, что триггера пишут не идиоты. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 20:59 |
|
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, не наше. Т.е. по-идее, всё было правильно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.08.2016, 23:35 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_что я в триггере могу нарушить чек-констрейнт для изначально валидных данных, и мне за это ничего не будет. по идее поьзовательские триггера бывают BEFORE UPDATE и AFTER UPDATE при этом AU изменить значение не может и вполне может вызываться после чеков а вот BU может и по идее чеки должны делаться по результатам изменения значений BU-триггерами ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 10:40 |
|
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:12 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_, а назначить этот триггер не BU а AU в интербейзе позволят ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:23 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Ariochа назначить этот триггер не BU а AU в интербейзе позволят ?Какой триггер? Вы о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:31 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_, из вашего скрипта сделать его after insert а не before съест такое интербейз ? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:34 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Arioch, ты сегодня какую-то чепуху несёшь. BEFORE и AFTER триггеры они разные по смыслу. Ничего ты в AFTER триггере подправить уже не сможешь, следовательно констрейну это никак не поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:37 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Симонов Денис, молодец, возьми с полки пирожок (С) но к самому впросу этот труизм ничего не добавляет, а вопрос был, позволяет ли именно IB создать такой триггер или нет ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:41 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Ariochа вопрос был, позволяет ли именно IB создать такой триггер или нетПозволяет. И какой в нем будет смысл? Модифицировать поля уже поздно ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:48 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Ariochиз вашего скрипта сделать его after insert а не before съест такое интербейз ?Такое никто не съест. Нельзя в AFTER триггере модифицировать поля вставляемой записи ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:49 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_, продолжайте платить за IB :) PS не удержался, вырвалось ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 15:56 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
_Vasilisk_Позволяет. _Vasilisk_Такое никто не съест. Плюрализм мнений в одной голове ? После приведённого вам примера я от IB чего угодно могу ожидать _Vasilisk_Нельзя в AFTER триггере модифицировать поля вставляемой записи Сами записи м.б. и нет, а вот модифицировать переменные контекста - те самые NEW.xxxx - по моему ранние FB и до-FBшные IB позволяли ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 17:57 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Arioch, ну значит не скопировали они это исправление из FB. ЕМНИП это правилось ещё в Firebird 1.0 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 18:00 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
Симонов Денис, Пока не понятно Василиск не пробовал, а у мну IB нет Вот-вот, я же помню что это было, хотя и правилось. И если у них до сих пор чеки не вовремя вызываютсЯ, то может быть они вообще ничего в триггерах не правили. Хотя, конечно, целая пака халявных переменных... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 18:20 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
AriochПлюрализм мнений в одной голове ?Вы внятно формулируйте свои желания AriochПока не понятно Василиск не пробовалЧто я не пробовал? Я уже все написал AriochСами записи м.б. и нет, а вот модифицировать переменные контекста - те самые NEW.xxxx - по моему ранние FB и до-FBшные IB позволялиКак раз выполнение INSERT/DELETE/UPDATE не запрешено нигде. А вот модифицировать контекст - только в BEFORE ... |
|||
:
Нравится:
Не нравится:
|
|||
02.08.2016, 23:26 |
|
CHECK constraint
|
|||
---|---|---|---|
#18+
не пробовали 19487599 сделать ваш триггер Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
и посмотреть позволит ли это IB _Vasilisk_модифицировать контекст - только в BEFORE раньше это было не так, и судя по другому древнему багу в IB - этот тоже могли не исправить ... |
|||
:
Нравится:
Не нравится:
|
|||
03.08.2016, 10:38 |
|
|
start [/forum/topic.php?fid=40&msg=39284826&tid=1562026]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 305ms |
total: | 447ms |
0 / 0 |