sql基礎知識-----主外來鍵、參照完整性
阿新 • • 發佈:2019-02-12
<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 中在加入一行資料,發現報如下錯誤了:這裡我們不難發現:因為主表Stores 中沒有我們新加的這一行資料中的此表的外來鍵,所以就報錯了,這就是資料的參照完整性。<span style="font-size:18px;">訊息 547,級別 16,狀態 0,第 1 行 INSERT 語句與 FOREIGN KEY 約束"FK__Sales__StoreCODE__04E4BC85"衝突。該衝突發生於資料庫"DatabasePractice",表"dbo.Stores", column 'StoreCode'。 語句已終止。 </span>