sql基礎知識-----主外鍵、參照完整性

<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 中沒有我們新加的這一行數據中的此表的外鍵,所以就報錯了,這就是數據的參照完整性。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章