日期:2014-05-16  浏览次数:20433 次

数据库开发——参照完整性——在外键中使用Delete on cascade选项

原文:

http://www.mssqltips.com/sqlservertip/2743/using-delete-cascade-option-for-foreign-keys/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012731

 

参照完整性在设计数据库时需要重视,在我作为DBA的生涯中,看到很多设计走了极端的路子。

在进入DELETE CASCADE选项的详细说明前,先来看看另外一个选项,可以在具有外键的表中设置UDPATE CASCADE选项。在我的工作生涯中,我从来没有遇到过必须通过外键来更新一列或多列。

创建实例表:

在本例中,创建两个表,并用外键关联起来。主表有99999行记录,子表对于每条父记录,有19条记录。下面是创建语句:

-- Table creation logic

--parent table

CREATE TABLE [dbo].[Order](

 [OrderID] [bigint] NOT NULL,

 [OrderData] [varchar](10) NOT NULL,

 CONSTRAINT [PK_Order_1] PRIMARY KEY CLUSTERED

    ([OrderID] ASC)

)

GO

-- child table

CREATE TABLE [dbo].[OrderDetail](

 [OrderDetailID] [bigint] NOT NULL,

 [OrderID] [bigint] NULL,

 [OrderData] [varchar](10) NULL,

 CONSTRAINT [PK_OrderDetail] PRIMARY KEY CLUSTERED

    ([OrderDetailID] ASC)

)

GO

-- foreign key constraint

ALTER TABLE [dbo].[OrderDetail]  WITH CHECK

ADD CONSTRAINT [FK_OrderDetail_Order] FOREIGN KEY