主表:订单表 Order
orderID、 date 、 N (orderID为主键)
1 2010-01-23 .
2 2010-01-24 .
3 2010-01-25 .
4 2010-01-26 .
5 2010-01-27 .
子表:订单明细表OrderDetail
orderID、 材料编号、数量、单价
1 ZL001 23 23.2
1 ZL001 23 23.2
2 ZL001 23 23.2
2 ZL001 23 23.2
3 ZL001 27 23.1
4 ZL001 12 23.2
4 ZL001 3 23.0
4 ZL001 23 23.2
想实现:当我更新主表中的orderID后,子表订单明细表的 orderID也跟着修改。我自己写了触发器,但有问题更新主表的orderID后,单明细表的 orderID没有跟着修改create trigger Order_Trigger on Order
for update
as
begin
set nocount on
declare @id int
select @id=Orderid from inserted
begin
update OrderDetail set Orderid=@id where Orderid=(select Orderid from inserted)
end
end恳求各位大虾帮忙,指点错误在那? 或有其他更好的方法来实现
orderID、 date 、 N (orderID为主键)
1 2010-01-23 .
2 2010-01-24 .
3 2010-01-25 .
4 2010-01-26 .
5 2010-01-27 .
子表:订单明细表OrderDetail
orderID、 材料编号、数量、单价
1 ZL001 23 23.2
1 ZL001 23 23.2
2 ZL001 23 23.2
2 ZL001 23 23.2
3 ZL001 27 23.1
4 ZL001 12 23.2
4 ZL001 3 23.0
4 ZL001 23 23.2
想实现:当我更新主表中的orderID后,子表订单明细表的 orderID也跟着修改。我自己写了触发器,但有问题更新主表的orderID后,单明细表的 orderID没有跟着修改create trigger Order_Trigger on Order
for update
as
begin
set nocount on
declare @id int
select @id=Orderid from inserted
begin
update OrderDetail set Orderid=@id where Orderid=(select Orderid from inserted)
end
end恳求各位大虾帮忙,指点错误在那? 或有其他更好的方法来实现
解决方案 »
- SQLColumns传入的表名字符数较多时,该函数直接崩溃跳出
- 求sql语句..
- A机器IP是192.168.78.101,B机器IP是210.76.32.102,现在在A机器上远程为B机器安装MYSQL,怎样安装?安装的时候怎样设置?
- 依旧是排序问题
- Java上机测试题:我水平有限,写不出那个查询语句出来.
- 各位大哥请帮帮忙!一个关于MYSQL数据库方面的问题,我是新手,请帮忙!谢谢
- 求问一个mysql查询的问题`
- 100分跪求如何mysql全文索引查询所用关键词最小长度限制
- 怎样用SQL语言在已有table的基础上抽出部分信息,做成新的table??在线等ing......
- 查询最新的日期
- jdbc连接mysql问题,请高手赐教
- mysql连续插入数据
FOR EACH ROW BEGIN
UPDATE OrderDetail SET Orderid=NEW.Orderid WHERE Orderid=OLD.Orderid ;
END;
|delimiter ;你的语句根本不对,建议参考MYSQL的手册中的语法。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
/*-------------------批量更新订单表的inOrderID----------------------------------------declare cur_bbb cursor dynamic for
select InOrderID from inOrder
declare @count int,@id int
set @id=1
select @count=count(*) from inOrder
open cur_bbb
while @count>0
begin
fetch next from cur_bbb
update inOrder set InOrderID=830+@id where current of cur_bbb
set @id=@id+1
set @count=@count-1
end
close cur_bbb
deallocate cur_bbb*/
测试结果:订单表更新成功。订单明细表的InOrderID没有跟着更新。不知道原因在那?个人举得触发器的Update语句有问题。各位帮忙看看。
这句没看明白啊
on Order
for update,delete
as
begin
if exists(select 1 from inserted)
update OrderDetail set inOrderID=(select inOrderID from inserted) where inOrderID=(select inOrderID from deleted)
else
delete OrderDetail where inOrderID=(select inOrderID from deleted)
end
go
试了上面那个触发器可以用。我之前写果然有问题。
事情已经搞定了,呵呵~~
再次多谢楼上各位的光临和支持。特别是2楼的朋友。