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 中没有我们新加的这一行数据中的此表的外键,所以就报错了,这就是数据的参照完整性。

    原文作者:SQL
    原文地址: https://blog.csdn.net/tangjue18246068217/article/details/51316431
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞