我使用下面的方法去删除,但只能删除pr_sbjb中的数据,不能删除pr_sbzh的信息内容 s:=dbedit1.Text ; s1:=s; with query1 do begin close; sql.Clear; sql.Add('delete pr_sbjb'); sql.Add('where dwdm='''+s+''' '); prepare; execsql; end; with query1 do begin close; sql.Add('delete pr_sbzh'); sql.Add('where dwdm ='''+s1+''''); prepare; execsql; end; 晴大家帮我看一下
我虽然不懂大型SQL 但是你的问题好象在于 delete pr_cbzh where pr_cbzh.dwdm=PR_CBJB.dwdm 如果错了别见笑 我从未用过sqlserver
老兄:select dwdm from deleted这句话什么意思?deleted是表名吗?好象意思是调用删除吧?我也不太明白!提供一个思路而已!不要笑我!!
是不是 因为少了from ?
SQL Error: SQL Server - [Microsoft][ODBC SQL Server Driver][SQL Server]Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression 这个错误的根源是什么?
我按你的语句编写了一个同样的触发器,发现:如果先建立了外键联系时,触发器不触发,而是先产生“已经存在外部联系,不能被删除。”的错误;如果没有建立外键就正常。 因为 ms SQL7 不支持级联删除,所以这类问题还是有点麻烦,不过听说 msSQL2000 支持了。根据: with query1 do begin close; sql.Clear; sql.Add('delete pr_sbjb'); sql.Add('where dwdm='''+s+''' '); prepare; execsql; end; with query1 do begin close; sql.Add('delete pr_sbzh'); sql.Add('where dwdm ='''+s1+''''); prepare; execsql; end; 可以知道你的表间没有建立外键联系,所以以上触发器应该能正常工作呀。 另外我不明白你为什么说 “但只能删除pr_sbjb中的数据,不能删除pr_sbzh的信息内容 ”?即使在没有触发器的情况下也应该正常工作呀。
s:=dbedit1.Text ;
s1:=s;
with query1 do begin
close;
sql.Clear;
sql.Add('delete pr_sbjb');
sql.Add('where dwdm='''+s+''' ');
prepare;
execsql;
end;
with query1 do begin
close;
sql.Add('delete pr_sbzh');
sql.Add('where dwdm ='''+s1+'''');
prepare;
execsql;
end;
晴大家帮我看一下
但是你的问题好象在于
delete pr_cbzh where pr_cbzh.dwdm=PR_CBJB.dwdm
如果错了别见笑
我从未用过sqlserver
这个错误的根源是什么?
因为 ms SQL7 不支持级联删除,所以这类问题还是有点麻烦,不过听说 msSQL2000 支持了。根据:
with query1 do begin
close;
sql.Clear;
sql.Add('delete pr_sbjb');
sql.Add('where dwdm='''+s+''' ');
prepare;
execsql;
end;
with query1 do begin
close;
sql.Add('delete pr_sbzh');
sql.Add('where dwdm ='''+s1+'''');
prepare;
execsql;
end;
可以知道你的表间没有建立外键联系,所以以上触发器应该能正常工作呀。
另外我不明白你为什么说 “但只能删除pr_sbjb中的数据,不能删除pr_sbzh的信息内容
”?即使在没有触发器的情况下也应该正常工作呀。