Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ограничение внешнего ключа
|
|||
|---|---|---|---|
|
#18+
Добрый день, возник вопрос, где ошибка. Вот код: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO ALTER TRIGGER [dbo].[Deleteworker] ON [dbo].[worker] for delete as DECLARE @YEAR INT; SET @YEAR = (SELECT deleted.year from deleted) DECLARE @ID INT; SET @ID = (SELECT deleted.id from deleted) update tools set owner_id = null where tools.owner_id = @ID if @YEAR > 20 begin delete tools where tools.owner_id = @ID end При удалении из таблицы workers пишет, что проблемы с ключом. Каскадное удаление и другие фичи не предлагать, так как нельзя это использовать в задании) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2019, 21:23 |
|
||
|
Ограничение внешнего ключа
|
|||
|---|---|---|---|
|
#18+
sqlfool Код: sql 1. 2. 3. Этот триггер не выполняется, так как FOR DELETE - это выполнение триггера после удаления. А удаление завершается ошибкой, то есть не выполняется. Нужно перехватывать удаление с помощью INSTEAD OF: Код: sql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2019, 21:34 |
|
||
|
Ограничение внешнего ключа
|
|||
|---|---|---|---|
|
#18+
sqlfoolПри удалении из таблицы workers пишет, что проблемы с ключом.Желательно копировать сообщение об ошибке, а не передавать своими словами. А триггер срабатывает после удаления, соответственно, ключи проверяются до выполнения триггера. PS сам триггер ужасен, что вы рассчитываете увидеть в переменной @YEAR, если SELECT deleted.year from deleted вернёт 2 разных года? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2019, 21:35 |
|
||
|
Ограничение внешнего ключа
|
|||
|---|---|---|---|
|
#18+
sqlfool, советую вам никогда в триггере не декларировать скалярные переменные для присвоения им значения из deleted или inserted. В этих псевдотаблицах может быть миллиард записей! Как вы планируете разместить миллиард значений в одной скалярной переменной?? Надо просто пользоваться inserted и deleted как обычными таблицами. Никаких переменных! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2019, 10:56 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39882483&tid=1687049]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
329ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 636ms |

| 0 / 0 |
