[英]Prevent deleting or updating the parent if child exists in SQL Server 2008
我有两张桌子:
declare @parent table
(
[SEARCHID] [int] NOT NULL,
[COMPID] [int] NOT NULL,
[COMPPNO] [varchar](35) NOT NULL,
[PACKSIZE] [varchar](100) NOT NULL
)
DECLARE @CHILD TABLE
(
[SEARCHID] [int] NOT NULL,
[COMP_ID] [int] NULL,
[PROD_LINK] [varchar](500) NULL,
[SRPNO] [varchar](24) NULL
)
愿有人可以帮帮我吗? 如何确保searchid存在于子节点中,那么它不应该在父表中更改或删除?
你真的需要一个声明的表变量吗? 在这种情况下,您需要使用本地逻辑。
如果您在物理上定义表,无论是作为临时表还是作为其中一个数据库中的表,您都可以使用外键约束轻松解决此问题:
试试这样:
CREATE TABLE parent
(
[SEARCHID] [int] NOT NULL,
[COMPID] [int] NOT NULL,
[COMPPNO] [varchar](35) NOT NULL,
[PACKSIZE] [varchar](100) NOT NULL
);
CREATE TABLE CHILD
(
[SEARCHID] [int] NOT NULL CONSTRAINT FK_Child_SearchId FOREIGN KEY REFERENCES parent(SEARCHID),
[COMP_ID] [int] NULL,
[PROD_LINK] [varchar](500) NULL,
[SRPNO] [varchar](24) NULL
)
如果你的父行根本不应该改变,如果至少有一个孩子,你就会读到INSTEAD OF TRIGGER
来强制执行你想要的行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.