当更新employee表中emp_no列的值时,同时更新sales表中的sale_id列的值,并且一次只能更新一行
create trigger tr_employe_update
on employee for update
as
begin
declare @oldEmp_no char(20)
declare @newEmp_no char(20)
declare @row_cnt int
select @row_cnt=COUNT(*) from inserted
if @row_cnt>1
begin
print'每次只能更新一条记录!!'
rollback transaction
end
if UPDATE(emp_no) and @@ROWCOUNT=1
begin
select @oldEmp_no=emp_no from deleted
select @newEmp_no=emp_no from inserted
update sales
set sale_id=@newEmp_no
where sale_id=@oldEmp_no
end
end
请问上述代码有没有什么问题啊、、、求解
create trigger tr_employe_update
on employee for update
as
begin
declare @oldEmp_no char(20)
declare @newEmp_no char(20)
declare @row_cnt int
select @row_cnt=COUNT(*) from inserted
if @row_cnt>1
begin
print'每次只能更新一条记录!!'
rollback transaction
end
if UPDATE(emp_no) and @@ROWCOUNT=1
begin
select @oldEmp_no=emp_no from deleted
select @newEmp_no=emp_no from inserted
update sales
set sale_id=@newEmp_no
where sale_id=@oldEmp_no
end
end
请问上述代码有没有什么问题啊、、、求解
解决方案 »
- MSSQL2005在配置数据库镜像时的传输被禁用了怎么启动啊
- 另一个问题:索引的
- 有谁用过ODBC的方式连接数据库吗?
- 请教如何在SQL Server中存储图像、动画、音乐文件的????
- MSSQL 2005 怎么实现mysql的limit 功能
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket
- 这样的输出结果????高手帮忙!!!
- 想把sql server7.0数据转到oracle中,具体该怎么做?
- VFP能对汉字进行排序吗?
- 学习C#过程中遇到数据库问题,希望大神帮帮忙,感激不尽
- 新增升级问题针对:求sql单语句,统计功能,增加一个检查部位个数的,
- 如何在sql中用扩展命令删除文件
在测试的时候。employee中emp_no是主键,sales中sale_id是employee的外键,主键是order_no, sale_item中的order_no是主键也是sales的外键,
当我在更新emp_no值时,却提示sales sale_item间有外键约束,难道这个触发器破坏了完整性?如果要达到更新emp_no时,sale_id也能更新
sale_item中的order_no是sales的外键
所以在怀疑是不是触发器有问题
begin
print'每次只能更新一条记录!!'
rollback transaction
end
改为if @row_cnt>1
begin
raiserror('每次只能更新一条记录!!',16,1)
rollback transaction
return
end