SQL Server Management Studio при каскадном обновлении - PullRequest
0 голосов
/ 14 февраля 2012

Я работаю над простой базой данных, в которой я хотел бы иметь отношение «один ко многим». Я создал внешний ключ на ON UPDATE CASCADE, основываясь на моем понимании ON UPDATE CASCADE, если мой Первичныйполучает инкрементный Внешний ключ в другой таблице, которая ссылается на него, также будет увеличена / будет иметь значение Первичного в другой таблице.но проблема в том, что когда я вставляю данные в родительскую таблицу, внешний ключ в другой таблице не получает значение первичного в родительской таблице, почему это так?Как мой внешний ключ будет иметь значение ключа, который связан с ним?Вот скриншот, который вы, ребята, можете легко понять enter image description here

Как вы можете видеть, P_ID в таблице заказов не имеет значения, даже если он связан с P_ID в таблице People.

Ожидаемый результат будет таким, что в таблице Orders значение P_ID будет эквивалентно P_ID таблицы людей, куда я вставил свои данные.

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

но проблема в том, что я вставляю данные в родительскую таблицу.

Вы не получите никаких действий при вставке, только on update.

Если у вас есть люди номер 1 и порядок для людей номер один, если вы измените его на номер 2, порядок будет изменен на 2.

Возможно, вам понадобится триггер. расскажите подробнее, каков ожидаемый результат

EDIT:

Пример триггера:

create trigger InsertRecordOnOrder
on People
after insert
as
begin
    insert into Orders
    select * from INSERTED
end
0 голосов
/ 14 февраля 2012

Я думаю, вы неправильно поняли НА ОБНОВЛЕНИИ КАСКАДА.Пожалуйста, обратитесь по следующей ссылке.

http://msdn.microsoft.com/en-us/library/aa933119%28v=sql.80%29.aspx

...