今天,因爲項目有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;
主鍵與外鍵的運用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章