2012-04-27 2 views
0

У меня есть таблица Task с TaskId в качестве основного ключа. И еще одна таблица TimeSheet с TaskId как внешний ключ. Я создал внешний ключ отношения, как этотудаление иностранного ключа ошибка записи ребенка 547

ALTER TABLE TimeSheet ADD CONSTRAINT fk_TimeSheet_TaskId FOREIGN KEY(TaskId) 
REFERENCES Task (TaskId) 
GO 

На самом деле, если я пытаюсь удалить (или обновление) строку в таблице задач он должен показать ошибку относительно внешнего ключа отношения. И если я попытаюсь удалить в таблице TimeSheet, я не должен получать никаких ошибок.

Но для меня я получаю ошибку 547, если попытаюсь удалить или обновить в таблице TimeSheet. Условные обозначения разрешены в колонке с внешним ключом (TaskId в таблице TimeSheet).

Что мне здесь делать? Я хочу выбросить ошибку, если попытаюсь удалить или обновить родительскую таблицу (Task), и нет ошибки, если я попытаюсь удалить или обновить в дочерней таблице (TimeSheet).

+0

Можете ли вы показать нам определения обеих таблиц, включая все ограничения? – deutschZuid

+0

Кроме того, название этого вопроса не является реальной ошибкой? Можете ли вы скопировать и вставить точное сообщение об ошибке? – deutschZuid

ответ

0

Если мы используем FOREIGN KEY: (. Соответственно обновлена)

Когда строки в (ссылка) основной таблицы удаляются, соответствующие строки ребенка (ссылки) таблицы с соответствующим столбца внешнего ключа будет получить удаленный (соответственно обновлено). Не наоборот.

Если вы хотите работать по вашему вопросу, попробуйте использовать триггер.

+0

Это не то, что пытается сделать ОП, а удаление строки, содержащей внешний ключ, в другую таблицу, обычно не должно вызывать никаких проблем. – deutschZuid

Смежные вопросы