大侠,最好把例子举出来瞧瞧
解决方案 »
- 用SQL语句可以控制随机数出现概率!
- 求教:事务,锁,插入更新问题 立即结贴
- 急等待,为什么我的远程服务器的1433端口连接不上???
- 用guid字符串作主键,用char(36)好还是用uniqueidentifier好?
- 求救! SQLSERVER死锁,崩溃了. 在线等!
- sqlserver2005 windows方式远程登录失败,大虾帮帮忙!
- sQL 多字段查询语句
- 高分请教数据库还原问题!!!!急!急!急!急!急!急!
- 请问sqlserver同步问题
- SQL SERVER 2000的自定义函数和存储过程在VC++下如何调用?
- ADO问题
- js_szy 同学进来一下,我的分数给错了~~~~~
标题:两表通过字段关联进行级联删除。
作者:爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开)
时间:2008-11-20
地点:广东深圳
*/create table ta(id int not null)
create table tb(id int , aid int)
insert into ta values(1)
insert into ta values(2)
insert into tb values(1 , 1)
insert into tb values(2 , 2)
insert into tb values(3 , 1)
go--一、查看原始数据
--ta表的原始数据
select * from ta
/*
id
-----------
1
2
*/
--tb表的原始数据
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/--二、看看没有创建级联删除时的情况(删除ta表id=1的数据,看看是否影响tb表)
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
1 1
2 2
3 1
*/--三、恢复原始数据,创建级联删除,删除ta表id=1的数据,看看是否影响tb表
insert into ta values(1)
--为ta创建主健
alter table ta add constraint pk_ta_id primary key (id)
go
--为tb创建外健,并指定级联删除
alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade
go
delete from ta where id = 1
select * from ta
/*
id
-----------
2
*/
select * from tb
/*
id aid
----------- -----------
2 2
*/--删除级联约束
alter table tb drop constraint fk_tb_aid
go
--删除测试表
drop table ta , tb
go
创建新表。语法
CREATE TABLE
[ database_name.[ owner ] .| owner.] table_name
( { < column_definition >
| column_name AS computed_column_expression
| < table_constraint > ::= [ CONSTRAINT constraint_name ] } | [ { PRIMARY KEY | UNIQUE } [ ,...n ]
) [ ON { filegroup | DEFAULT } ]
[ TEXTIMAGE_ON { filegroup | DEFAULT } ] < column_definition > ::= { column_name data_type }
[ COLLATE < collation_name > ]
[ [ DEFAULT constant_expression ]
| [ IDENTITY [ ( seed , increment ) [ NOT FOR REPLICATION ] ] ]
]
[ ROWGUIDCOL]
[ < column_constraint > ] [ ...n ] < column_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ NULL | NOT NULL ]
| [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
[ WITH FILLFACTOR = fillfactor ]
[ON {filegroup | DEFAULT} ] ]
]
| [ [ FOREIGN KEY ]
REFERENCES ref_table [ ( ref_column ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
]
| CHECK [ NOT FOR REPLICATION ]
( logical_expression )
} < table_constraint > ::= [ CONSTRAINT constraint_name ]
{ [ { PRIMARY KEY | UNIQUE }
[ CLUSTERED | NONCLUSTERED ]
{ ( column [ ASC | DESC ] [ ,...n ] ) }
[ WITH FILLFACTOR = fillfactor ]
[ ON { filegroup | DEFAULT } ]
]
| FOREIGN KEY
[ ( column [ ,...n ] ) ]
REFERENCES ref_table [ ( ref_column [ ,...n ] ) ]
[ ON DELETE { CASCADE | NO ACTION } ]
[ ON UPDATE { CASCADE | NO ACTION } ]
[ NOT FOR REPLICATION ]
| CHECK [ NOT FOR REPLICATION ]
( search_conditions )
语法:
Foreign Key
(column[,...n])
references referenced_table_name[(ref_column[,...n])]
[on delete cascade]
[on update cascade]
注释:
column:列名
referenced_table_name:外键参考的主键表名称
ref_name:外键要参考的表的主键列
on delete:删除级联
on update:更新级联
insert 班级表 values('天动二班','大气科学系',4)
insert 班级表 values('天动三班','大气科学系',4)
insert 班级表 values('天动四班','大气科学系',4)create table 学生表(学号 char(8),姓名 char(6),班级名 char(8))insert 学生表 values('01980001','张一','天动一班')
insert 学生表 values('01980002','张二','天动一班')
insert 学生表 values('01980003','张三','天动一班')
insert 学生表 values('01980004','张四','天动二班')
insert 学生表 values('01980005','张五','天动二班')
insert 学生表 values('01980006','张六','天动三班')
insert 学生表 values('01980007','张七','天动四班')
CREATE TRIGGER [T1] ON 班级表
FOR UPDATE
AS
if update(班级名)
update a
set a.班级名 = (select 班级名 from inserted )
from 学生表 a join deleted b
on a.班级名 = b.班级名
goupdate 班级表
set 班级名='自动化'
where 班级名 = '天动一班'
/*
更新前
学号 姓名 班级名
-------- ------ --------
01980001 张一 天动一班
01980002 张二 天动一班
01980003 张三 天动一班
01980004 张四 天动二班
01980005 张五 天动二班
01980006 张六 天动三班
01980007 张七 天动四班
更新后学号 姓名 班级名
-------- ------ --------
01980001 张一 自动化
01980002 张二 自动化
01980003 张三 自动化
01980004 张四 天动二班
01980005 张五 天动二班
01980006 张六 天动三班
01980007 张七 天动四班
*/
1 nihao
2 haha表B
id aid name
1 1 aaaa
2 1 bbbb
3 2 ccccc
alter table ta add constraint pk_ta_id primary key (id) alter table tb add constraint fk_tb_aid foreign key (aid) references ta(id) on delete cascade on update cascade
有级联的方式来修改
根据表A的ID来修改表B所对应的ID数据.
on update:更新级联
再用个级联更新呀