總網頁瀏覽量

2013年1月7日 星期一

BEGIN TRANSACTION
SET QUOTED_IDENTIFIER ON
SET ARITHABORT ON
SET NUMERIC_ROUNDABORT OFF
SET CONCAT_NULL_YIELDS_NULL ON
SET ANSI_NULLS ON
SET ANSI_PADDING ON
SET ANSI_WARNINGS ON
COMMIT

BEGIN TRANSACTION
GO

ALTER TABLE dbo.Customers
ADD CONSTRAINT
 PK_Customers PRIMARY KEY CLUSTERED
 (
 CustomerID
 )
 WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO


ALTER TABLE dbo.Customers SET (LOCK_ESCALATION = TABLE)
GO

COMMIT

BEGIN TRANSACTION
GO
ALTER TABLE dbo.Orders ADD CONSTRAINT
 PK_Orders PRIMARY KEY CLUSTERED
 (
 OrderID
 ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO

ALTER TABLE dbo.Orders ADD CONSTRAINT
 FK_Orders_Customers FOREIGN KEY
 (
 CustomerID
 ) REFERENCES dbo.Customers
 (
 CustomerID
 ) ON UPDATE  CASCADE
  ON DELETE  NO ACTION
GO



ALTER TABLE dbo.Orders SET (LOCK_ESCALATION = TABLE)
GO
COMMIT



更新規則


讓您使用下列選項更新規則:
NO ACTION、CASCADE、SET NULL、SET Default
如果您指定 NO ACTION,SQL Server Compact 就會傳回錯誤,也會回復對於父資料表中受參考資料列的更新動作。
如果您指定 CASCADE 選項,而且在父資料表中更新對應的受參考資料列,就會在參考資料表中更新此資料列。
例如,資料庫中可能有 A 和 B 兩個資料表。資料表 A 具有資料表 B 的參考關聯性:A.ItemID 外部索引鍵會參考 B.ItemID 主索引鍵。
如果在資料表 B 中的資料列執行 UPDATE 陳述式,並且針對 A.ItemID 指定 ON UPDATE CASCADE 動作,SQL Server Compact 會檢查資料表 A 中是否有一個或多個相依資料列。如果有,則資料表 A 中的相依資料列會更新,而且所參考之資料表 B 中的資料列也會更新。

刪除規則


讓您使用下列選項刪除規則:
NO ACTION、CASCADE、SET NULL、SET Default
如果您指定 NO ACTION,SQL Server Compact 就會傳回錯誤,也會回復對於父資料表中受參考資料列的刪除動作。
如果您指定 CASCADE 選項,而且在父資料表中刪除對應的受參考資料列,就會在參考資料表中刪除此資料列。
例如,資料庫中可能有 A 和 B 兩個資料表。資料表 A 具有資料表 B 的參考關聯性:A.ItemID 外部索引鍵會參考 B.ItemID 主索引鍵。
如果在資料表 B 中的資料列上執行 UPDATE 陳述式,並且針對 A.ItemID 指定 ON UPDATE CASCADE 動作,SQL Server Compact 會檢查資料表 A 中是否有一個或多個相依資料列。如果有,則資料表 A 中的相依資料列會被刪除,而所參考之資料表 B 中的資料列也會被刪除。

沒有留言:

張貼留言