因为主外键的约束关系,比如,table a 的field_a 是主键,table a 的field_b 是外键。
field_a中有值 test,field_b中也有值test.
如果直接删除field_a 中的test,就会出错。
办法:先删除field_b 中的test,在删除field_b中的test.
field_a中有值 test,field_b中也有值test.
如果直接删除field_a 中的test,就会出错。
办法:先删除field_b 中的test,在删除field_b中的test.
如果要实现删除双亲表记录的同时,也删除子表从属行,在oracle或informix中可以在建外键时加上on delete cascade选项,不清楚sqlserver是否支持此功能,确实不行的话可以自己编写触发器来完成。
如果是oracle可以!
其实最好的方法是在前台处理这个问题!那样你可以找到其对应的记录删除以后再删除你要删除的记录!
例表:
create table master (id int primary key,name varchar(10));
create table detail (id int,par_id int references master(id));级联删除存储过程
create proc casdel @id int
as
delete from detail where par_id =@id
delete from master where id=@id插入示例数据
insert into master values(1,'a')
insert into master values(2,'b')
insert into detail values(1,1)
insert into detail values(2,1)
insert into detail values(3,1)执行存储完成级联删除
exec casdel 1
create TRIGGER tablemasterDelete
ON dbo.tablemaster
FOR DELETE
AS
delete tabledetail
from tabledetail,deleted
where tabledetail.field_key=deleted.field_key
碰到了几个问题: 1、db.ExecuteSQL("select curphase from tbsysmsg");
结果连接到本机(window 98,桌面版)时,读取正确,curphase="200101"
(2001年第一期);
而连接到服务器(NT4.0 服务器版)时,cuphase为什么会等于"20010",少了一位? 2、同样,在连接到本机时读取数据很完整,当连接到服务器,还有一部份
满足条件的记录怎么读不出来?记录条数少于1000个。
多次重试,结果是一样的。
摆脱各位了!!!