主鍵與外鍵的運用

今天,因爲項目有3張表,而且3張表之間,都有關聯,我又重溫習了一個主鍵與外鍵的運用:

--刪掉表
drop table dept
drop table emp


--創建dept表,
create table dept(deptno int primary key,dName nvarchar(30),loc nvarchar(30))

--這裏是dept(deptno)主鍵指向外鍵emp(deptno),沒有聯級刪除與更新
create table emp(empno int primary key
,eName nvarchar(30),
job nvarchar(30),
mgr int,
hiredate datetime,
sal numeric(10,2),
comm numeric(10,2),
deptno int foreign key references dept(deptno));

--以後爲創建表時,並創建聯級關係
create table emp(empno int primary key
,eName nvarchar(30),
job nvarchar(30),
mgr int,
hiredate datetime,
sal numeric(10,2),
comm numeric(10,2),
--聯級刪除
deptno int foreign key references dept(deptno) on delete cascade);
--聯級更新
--deptno int foreign key references dept(deptno) on update cascade);


--如果是創建表時,沒有創建聯級關係,可以再增加
create table emp(empno int primary key
,eName nvarchar(30),
job nvarchar(30),
mgr int,
hiredate datetime,
sal numeric(10,2),
comm numeric(10,2),
deptno int);

--這段語句就是增加聯級的刪除與更新
alter table emp add constraint FK_deptno foreign key (deptno) references dept(deptno) ON UPDATE CASCADE ON DELETE CASCADE


[color=red]以上的操作都是在sql server 2000中進行的,以下部分是插入與刪掉的數據,本人已經操作過沒有問題,圖片就不上傳了。
[/color]
insert into dept values(10,'grtu','newke')
insert into dept values(20,'sl','shengchang')

insert into emp(empno,eName,job,mgr,hiredate,sal,deptno)values
(103,'dengping','cleck',9,'1985-9-12',1300.00,10)


insert into emp(empno,eName,job,mgr,hiredate,sal,deptno)values
(106,'milik','cleck',9,'1985-9-12',1300.00,30)--deptno這時爲30時,就違反了主鍵定義,因爲30不存在,這就是外鍵指向主鍵的運用

insert into emp(empno,eName,job,mgr,hiredate,sal,deptno)values
(105,'lichong','IPQC',93,'1990-2-22',1400.00,10)

insert into emp(empno,eName,job,mgr,hiredate,sal,deptno)values
(104,'lichong','IPQC',93,'1990-2-22',1400.00,20)

select * from emp
select * from dept

delete from emp where empno= '105';
--聯級刪除
delete from dept where deptno= '10';
--聯級更新
update dept set deptno=11 where deptno =10;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章