回 帖 发 新 帖 刷新版面

主题:关于触发器的问题~~~~~~~~~

我写了个触发器,在删除主表中的数据时,把所有子表中相关联的数据都删掉
CREATE trigger aa on ajml
for delete
as
  delete from zlm
  where zlm.dh =(select dh from deleted )
    delete from ajmlmx
    where ajmlmx.dh=(select dh from deleted)
       delete from sbjbqk
       where sbjbqk.dh=(select dh from deleted)
用是能用的,但是,每次触发过后都会出现“不能清除某某表,...强制约束,并且某某表中有子行。”实际上是可以达到目的的,并不会不执行,那么要怎么做,才能不让这段提示显现出来,并且程序可以继续读下去,因为后面还有一段重新填充DATAGRID的代码,和“数据已经被修改的”消息代码。要是不继续执行下去,那么就要关掉当前窗口,重新打开,才会显示最新的数据了。拜托各位了!!!!

回复列表 (共7个回复)

沙发

既然执行起来没问题,告诉你一个对客户不负责任的做法(大家不要丢我):采用错误吞噬
try
{你的代码}
catch{}

板凳

55555,我就是那么干的~~~~~~~~~~~~~
可是,我自己都觉得太不付责任了……

3 楼

等有了时间再研究问题所在吧,也许你费劲研究了半天,结果却是给ms找了一个bug

4 楼

我把约束关掉了,然后delete后再打开,把dataset全部删掉,重新填充就行了[em4]

5 楼

你也每天都来啊……~~
sql server马上就要release 2005了,2005主要以soa(面向服务)的思想来指导的,逻辑功能会以xml策略的形式与数据(表)绑定,也许那个时候你就不想用存储过程了,毕竟ms自己都承认t-sql不太好使,所以才想把c#绑定进来以增强其功能的。

6 楼

除了星期6和7,其他时间我都上来的,因为上班嘛,呵呵
说句实话,我到现在好象还米用过存储过程[em8]

7 楼

[color=0000FF]你那几个表的关系图 中属性表与表之间的强制关系要设置为级联删除相关记录```这样应该不再出现问题了吧!!!![/color][em1]

我来回复

您尚未登录,请登录后再回复。点此登录或注册