触发器的代码如下
CREATE TRIGGER [TRIGGER_order] ON [dbo].[OdrMaster]
for INSERT
ASbegin
declare @id varchar
select @id= [OperName] from Inserted OperName
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
end当OdrMaster表执行insert操作时,将插入OdrMaster的字段OperName同步插入AoxinExchange表中。OdrMaster表插入后检测AoxinExchange表,发现的确新增加啦一条记录,但是OrderID字段是空的。这说明OperName字段的值没有取得。通过跟踪,OdrMaster插入时的语句如下。
INSERT INTO OdrMaster ( PsnCode, OdrBill, VendCode, OperName, StartDate, EndDate, CancelDate, JY_Mode, PayDays ) VALUES ( '010', '01009082900005', '001', '史罗明', '2009-8-29 0:0:0.000', '2009-8-31 0:0:0.000', '2009-9-4 0:0:0.000', 1, 0 ) 把for 换为after 也不行我实在是找不出问题出在哪里,请各位大侠帮我诊断一下吧。谢谢!
CREATE TRIGGER [TRIGGER_order] ON [dbo].[OdrMaster]
for INSERT
ASbegin
declare @id varchar
select @id= [OperName] from Inserted OperName
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
end当OdrMaster表执行insert操作时,将插入OdrMaster的字段OperName同步插入AoxinExchange表中。OdrMaster表插入后检测AoxinExchange表,发现的确新增加啦一条记录,但是OrderID字段是空的。这说明OperName字段的值没有取得。通过跟踪,OdrMaster插入时的语句如下。
INSERT INTO OdrMaster ( PsnCode, OdrBill, VendCode, OperName, StartDate, EndDate, CancelDate, JY_Mode, PayDays ) VALUES ( '010', '01009082900005', '001', '史罗明', '2009-8-29 0:0:0.000', '2009-8-31 0:0:0.000', '2009-9-4 0:0:0.000', 1, 0 ) 把for 换为after 也不行我实在是找不出问题出在哪里,请各位大侠帮我诊断一下吧。谢谢!
解决方案 »
- 在存贮过程中有很多print语句,有必要删除吗?(留着调试时用,影响大吗)
- 游标这样该怎么使用?
- 在线,,,,,,急 ,,,,能否在SQL的自动编号中设定规则,当编号被删除后还可以再次使用此编号呢,或者 怎么弄才可以让第二个编号是
- 关于标识种子的一个问题。
- 关于sql2005日志恢复的区别(full bulk)
- Sql Server 2000的CDKEY??? 急,在线等待。
- 怎样提高like查询的效率?
- SqlServer 怎样取得某表的主键名称 和 有默认值的字段的名称和其字段名!
- 这段程序在一个页面执行出错,但在另一个程序中成功,我找不出原因?烦啊!
- 用sql模拟:有12支乒乓球,其中一只是假的,其余的是真的,用天平秤来称重,你能用此天平秤秤3次
- 问题 在线等啊!
- 怎么把这里面的 移出仓库id 关联成 仓库名
for INSERT
AS
begin
INSERT INTO [AoxinExchange]([OrderID]) SELECT [OperName] from Inserted
end 直接这样就可以啦
不过不明白,为什么触发器里面不能通过select @id= [OperName] from Inserted OperName
取得Inserted 呢?
select *,id into b from a where .....
begin
declare @id varchar
select @id= [OperName] from Inserted --OperName
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
end
没加条件呀!
--忘記長度了
begin
declare @id varchar(100)
select @id= [OperName] from Inserted --OperName
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
end
for INSERT
ASbegin
declare @id varchar(500) --varchar不带参数长度是1
select @id= [OperName] from Inserted OperName
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
end 经测试可以
declare @id varchar
select @id= [OperName] from Inserted OperName
只能取到最后一条数据的[OperName],
再
INSERT INTO [AoxinExchange]([OrderID])VALUES( @id)
也就只能操作最后一条数据,对其他数据,就像触发器没起到作用这是触发器最常见的错误之一。
INSERT INTO [AoxinExchange]([OrderID]) SELECT [OperName] from Inserted
--最好这样子写,如果批量插入时你用变量取一条就不对了