您的位置:首页 > 数据库

sql基础知识-----主外键、参照完整性

2016-05-04 17:06 471 查看
<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 中没有我们新加的这一行数据中的此表的外键,所以就报错了,这就是数据的参照完整性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: