SQL Server 级联删除 ON DELETE CASCADE

来源:互联网 发布:我的世界手机版家具js 编辑:程序博客网 时间:2024/06/08 17:42
--创建测试主表CREATE TABLE [dbo].[Test]( [TestID] int NOT NULL, --主表ID [TestData] [varchar](10) NOT NULL,--主表内容数据 CONSTRAINT [PK_Test_1] PRIMARY KEY CLUSTERED([TestID] ASC)--设置主键)GO--创建测试子表CREATE TABLE [dbo].[TestDetail]( [TestDetailID] int NOT NULL,--子表ID [TestID] int NULL,  --主表ID [TestDetailData] [varchar](10) NULL,--子表内容数据 CONSTRAINT [PK_TestDetail] PRIMARY KEY CLUSTERED([TestDetailID] ASC)--子表主键)GO

设置外键约束,设置级联删除

--设置外键约束ALTER TABLE [dbo].[TestDetail]  WITH CHECKADD CONSTRAINT [FK_TestDetail_Test] FOREIGN KEY([TestID])REFERENCES [dbo].[Test]([TestID])ON DELETE CASCADE  --设置级联删除GO

添加测试数据(为主表添加100条数据,每条主表数据对应10条子表数据)

--添加测试数据(为主表添加100条数据,每条主表数据对应10条子表数据)DECLARE @val intDECLARE @val2 intSELECT @val=1WHILE @val <= 100BEGIN    INSERT INTO dbo.[Test] VALUES(@val,'测试' + CAST(@val AS VARCHAR))     SELECT @val2=1   WHILE @val2 <= 10   BEGIN       INSERT INTO dbo.[TestDetail] VALUES ((@val*100000)+@val2,@val,'测试' + CAST(@val AS VARCHAR))      SELECT @val2=@val2+1   END   SELECT @val=@val+1    ENDGO

select * from [Test]select * from [TestDetail]

查询结果如下:


下面进行删除操作:

delete from [Test] where TestID=1

得到结果如下:

子表中TestID是1的也同时被删除了!


原创粉丝点击