create table Depart
(
Depart varchar(32) primary key
)create table SubDepart
(
Depart varchar(32),
SubDepart varchar(32)
)Create Table Employee
(
WorkNO varchar(18) primary key,
WorkName varchar(8),
depart varchar(32),
SubDepart varchar(32)
)goCreate trigger Depart_Update
on Depart
for update
as
begin
update SubDepart set Depart=(select Depart from inserted)
where Depart=(Select Depart from Deleted)
update Employee set Depart=(select Depart from inserted)
where Depart=(Select Depart from Deleted)
end
go
Create trigger SubDepart_Update
on SubDepart
for Update
as
begin
if update(SubDepart)
begin
update Employee set SubDepart=(select SubDepart from inserted)
where Depart=(Select Depart from Deleted) and SubDepart=
(select subDepart from deleted)
end
end当我在DBGrid中更新Depart表时就会出现"键列信息不足或不正确,更新影响更多行!"
而在SQL企业管理器中做就不出问题,这是什么原因呀。是触发器的问题吗?
(
Depart varchar(32) primary key
)create table SubDepart
(
Depart varchar(32),
SubDepart varchar(32)
)Create Table Employee
(
WorkNO varchar(18) primary key,
WorkName varchar(8),
depart varchar(32),
SubDepart varchar(32)
)goCreate trigger Depart_Update
on Depart
for update
as
begin
update SubDepart set Depart=(select Depart from inserted)
where Depart=(Select Depart from Deleted)
update Employee set Depart=(select Depart from inserted)
where Depart=(Select Depart from Deleted)
end
go
Create trigger SubDepart_Update
on SubDepart
for Update
as
begin
if update(SubDepart)
begin
update Employee set SubDepart=(select SubDepart from inserted)
where Depart=(Select Depart from Deleted) and SubDepart=
(select subDepart from deleted)
end
end当我在DBGrid中更新Depart表时就会出现"键列信息不足或不正确,更新影响更多行!"
而在SQL企业管理器中做就不出问题,这是什么原因呀。是触发器的问题吗?
解决方案 »
- 有想转做 Vc++ /Linux C++ 开发的程序员吗?我们招实习生
- 请问怎么使用 TWebBrowser,能给具体的例子吗?找不到资料
- 高分请教,我编写的多线程的Sock程序,运行后CPU占用100%。怎么办?在线等待!
- 有这样的高手吗?
- 谁有好的人事管理的软件能够提供我急用,提供线索的也有分
- 请问C++当中的UCHAR,LPSTR类型变量在DELPHI中该改为什么类型?谢谢
- 来者有分:我想写一个以IE为内核的浏览器,想从注册表中将用户的收藏夹资料导出来……
- 关于TreeView?
- 那位大侠能帮我解决这个串口通讯问题。
- 怎样把图片加到数据中?
- ActiveForm控件安装
- FastRepor里怎样做才能折行?
REATE TRIGGER XXX
FOR XX
AS
DECLARE
@IntRowCount Int,
BEGIN
SELECT @IntRowCount = @@RowCount
SET NOCOUNT ON --关闭
--..........
.............
SET NOCOUNT OFF --恢复
END如果你不想再Trigger里面更新多行,考虑更变表结构
set Depart=(select Depart from inserted)
SET NOCOUNT ON
...
...
...
...
...
...
... SET NOCOUNT OFF
我的触发器代码如下
CREATE TRIGGER [insertQXBMGN] ON [dbo].[QXBMGN]
FOR INSERT
AS
DECLARE
@bmbh varchar(30),
@gnmc varchar(30)
select @bmbh=部门编号,@gnmc=功能名称 from inserted
insert into QXBMAN(部门编号,窗体名,按钮名,按钮名称,是否可用)
(select @bmbh,QXCTAN.窗体名,QXCTAN.按钮名,QXCTAN.按钮名称,0 from QXGNCT,QXCTAN where QXGNCT.功能名称=@gnmc and QXGNCT.窗体名=QXCTAN.窗体名)
我添加是用缓存添加后提交代码如下:
try
UsPwoMainForm.QXBMGN.Connection.BeginTrans;
showmessage('3443');
UsPwoMainFORM.QXBMGN.UpdateBatch;
showmessage('dsf');
UsPwoMainForm.QXBMGN.Connection.CommitTrans;
showmessage('设置权限成功!');
close;
except
UsPwoMainForm.QXBMGN.Connection.RollbackTrans;
showmessage('设置不成功,请重新设置!');
UsPwoMainFORM.QXBMGN.CancelBatch;
end;
我的是什么原因