<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);"><span style="font-size:18px;">1.主鍵、外鍵------參照完整性</span></span>
表A 的主鍵是表B 的中的字段,這個字段就是表B 的外鍵,而參照完整性也是由此而來。
其實很好理解,字需要去建兩張表,按照上面的條件
<span style="font-size:18px;">CREATE TABLE Stores
(
StoreCode char(4) NOT null primary key,
Name varchar(40) not null ,
Address varchar(40) null,
City varchar(40) not null,
State char(2) not null,
zip char(5) not null
);
CREATE TABLE Sales
(
OrderNumber varchar(20) not null,
StoreCODE CHAR(4) NOT NULL FOREIGN KEY REFERENCES Stores(StoreCode),
OrderDate date not null,
Quantity int not null ,
terms varchar(12) not null,
TitleID int NOT NULL,
);
INSERT INTO Stores VALUES
('TEST ','TEST Store','1234 Anywhere street','here','NY','00319');
INSERT INTO Stores
(StoreCode ,Name ,City ,State ,zip )
values
('TET2','Test Store ','Here','NY ','00319');</span>
代碼到這裏是沒錯的,可以運行!
但是可以發現,這兩個表有一列共同的數據,不僅僅是列名相同,連列中的數據也是相同的,那麼如果列中的數據不同會出現上面情況呢?下面我們來看一下:
<span style="font-size:18px;">INSERT INTO Sales
values('TESTORDER','TET3',GETDATE(),10,'NET 30 ',1234567)</span>
我們向從表Sales 中在加入一行數據,發現報如下錯誤了:<span style="font-size:18px;">消息 547,級別 16,狀態 0,第 1 行
INSERT 語句與 FOREIGN KEY 約束"FK__Sales__StoreCODE__04E4BC85"衝突。該衝突發生於數據庫"DatabasePractice",表"dbo.Stores", column 'StoreCode'。
語句已終止。
</span>
這裏我們不難發現:因爲主表Stores 中沒有我們新加的這一行數據中的此表的外鍵,所以就報錯了,這就是數據的參照完整性。