订单表中字段
dbo.tb_Order:
FBillNO, FNetBillNO, FCusNO, FPayStyle, FFetchStyle, FAddress, FCustName, FCustAddress, FCustTel, FNote, FTypeID, FDept, Fstatus, Isdel
订单日志中字段:
dbo.tb_Order_Log
NO, FBillNO, FName, FEvent, FTime, FNote
求一存储过程,在对订单表dbo.tb_Order做新增操作时,把新增的信息同时更新到订单日志表dbo.tb_Order_Log 其中,NO 为自动增长的,FTime为当前时间,FName为当前登录用户,FBillNO,FNote为dbo.tb_Order中信息,FEvent默认为空。字段类型都可以的,其中两表一致!
谢谢帮助,有正确答案就给分!!
------解决方案--------------------
应该是触发器,不是存储过程.
------解决方案--------------------
- SQL code
--大致写法如下:create trigger my_trig on tb_Order for insertas insert into tb_Order_Log (FBillNO, FName, FTime, FNote ) select FBillNO , 这个登录用户比较麻烦, getdate(),FNote from insertedgo--最好表tb_Order加个登录用户字段,把登录用户写入tb_Order表。就可以这样:create trigger my_trig on tb_Order for insertas insert into tb_Order_Log (FBillNO, FName, FTime, FNote ) select FBillNO , FName, getdate(),FNote from insertedgo
------解决方案--------------------
- SQL code
使用触发器完成create trigger t1on dbo.tb_Orderfor insertasbegin insert into tb_Order_Log(FBillNO, FName, FTime, FNote ) select FBillNO,user_name(),getdate(),FNote from isnertedend
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
楼上的大虾都说了,如果单纯从数据库实现的话,那么最好是用触发器.但是如果有前台程序操作数据库那么可以用存储过程.
后者大体思路是,开启一个事务,然后先更新订单表,成功后接着更新日志表就可以了.存储过程分别写就可以应该.
------解决方案--------------------
------解决方案--------------------
简单一点的也可以考虑 2005的output
详情请参考http://blog.csdn.net/js_szy/archive/2009/11/30/4908948.aspx
------解决方案--------------------
create proc ins_order_log
@fbillno int --输入单据号
.
. --各种输入参数
.
.
as
begin tran
declare @rerurn int
insert into tb_order(fbillno,......) select @fbillno......
if @@error<>0
begin
goto err
set @return=1
end
insert into tb_order_log(TBILLNO) select @TBILLMNO
err:
rollback tran
------解决方案--------------------
------解决方案--------------------
- SQL code
--大致写法如下:create trigger my_trig on tb_Order for insertas insert into tb_Order_Log (FBillNO, FName, FTime, FNote ) select FBillNO , 这个登录用户比较麻烦, getdate(),FNote from insertedgo--最好表tb_Order加个登录用户字段,--1create trigger my_trig on tb_Order for insertas insert into tb_Order_Log (FBillNO, FName, FTime, FNote ) select FBillNO , user_name(), getdate(),FNote from insertedgo--2create trigger my_trig on tb_Order for insertas insert into tb_Order_Log (FBillNO, FName, FTime, FNote ) select FBillNO , SYSTEM_USER, getdate(),FNote from insertedgo