2012-02-14 2 views
0

Я работаю над простой базой данных, где я бы хотел, чтобы один был для многих отношений, я создал внешний ключ, который имеет на ON UPDATE CASCADE, основываясь на моем понимании ON UPDATE CASCADE, если мой Primary получает прирост, внешний ключ в другой таблице, ссылающийся на него, также будет увеличиваться/иметь значение Первичного в другой таблице. но проблема в том, что, когда я вставляю данные в свою родительскую таблицу, внешний ключ в другой таблице не получил значение Primary в моей родительской таблице, почему это так? Как бы мой внешний ключ имел значение ключа, связанного с ним? вот скриншот для вас, ребята easiy понять enter image description hereSQL Server Management Studio On Update Cascade

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

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

ответ

3

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

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

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

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

EDIT:

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

create trigger InsertRecordOnOrder 
on People 
after insert 
as 
begin 
    insert into Orders 
    select * from INSERTED 
end 
+0

Мой ожидаемый результат будет то, что на скриншоте выше, p_id в таблице заказа будет 1, поскольку его значение – KyelJmD

+0

@KyelJmD только гулкое что сказал Диего, это звучит, как вы можете триггер, что пожары сверху insert. – Dan

+0

Это не цель внешнего ключа, особенно с ограничением ON UPDATE. Вы должны оставить свой внешний ключ (без ON UPDATE, потому что я не думаю, что вам это нужно) и создать триггер INSTEAD OF INSERT на таблице Peoples, поэтому каждый раз, когда вы вставляете человека, он автоматически вставляет в него заказ – Diego

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