---------------表-----------------
create table outgo
(
outgoID bigint primary key identity(1,1),
outgoDate datetime default(getdate()),
outgoItem varchar(20),
outgoCount money not null,
);
GOcreate table list
(
listID bigint primary key identity(1,1),
listDate Datetime default(getdate()),
listItem varchar(20),
listCount money not null,
listType varchar(10) not null,
constraint chk_listtype check(listType = 'in' or listType = 'out'),
)
-------------触发器-------------------
create trigger tg_listout
On outgo
for insert
as
declare @lstDate datetime,@lstItem varchar,@lstCount money
select @lstDate = inserted.outgoDate, @lstItem = inserted.outgoItem, @lstCount = inserted.outgoCount From inserted
print @lstDate
print @lstItem
print cast(@lstCount as nvarchar)
insert into list (listDate,listItem,listCount,listType) Values (@lstDate, @lstItem, @lstCount, 'out');执行INSERT INTO outgo (outgoItem,outgoCount) Values ('买东西',200)后显示消息为:
---------------------
08 14 2006  3:38PM
 
200.00(所影响的行数为 1 行)
---------------------
outgoItem的值没有传出来,不知道怎么回事,望各位大哥帮忙~_~,开导小弟一下~

解决方案 »

  1.   

    ---------------表-----------------
    create table outgo
    (
    outgoID bigint primary key identity(1,1),
    outgoDate datetime default(getdate()),
    outgoItem Nvarchar(20),
    outgoCount money not null,
    );
    GOcreate table list
    (
    listID bigint primary key identity(1,1),
    listDate Datetime default(getdate()),
    listItem Nvarchar(20),
    listCount money not null,
    listType varchar(10) not null,
    constraint chk_listtype check(listType = 'in' or listType = 'out'),
    )
    -------------触发器-------------------
    GO
    create trigger tg_listout
    On outgo
    for insert
    as
    declare @lstDate datetime,@lstItem Nvarchar(100),@lstCount money --這裡的varchar沒有定義長度
    select @lstDate = inserted.outgoDate, @lstItem = inserted.outgoItem, @lstCount = inserted.outgoCount From inserted
    print @lstDate
    print @lstItem
    print cast(@lstCount as nvarchar)
    insert into list (listDate,listItem,listCount,listType) Values (@lstDate, @lstItem, @lstCount, 'out');
    GO
    INSERT INTO outgo (outgoItem,outgoCount) Values (N'买东西',200)
    Select * From listGO
    Drop Table outgo,list
    --Result
    /*
    listID listDate listItem listCount listType
    1 2006-08-14 17:01:53.487 买东西 200.0000 out
    */--顯示的消息為
    /*
    08 14 2006  5:01PM
    买东西
    200.00(影響 1 個資料列)
    (影響 1 個資料列)*/
      

  2.   

    不過不建議你這麼寫存儲過程,在批量插入數據的時候會有問題的。改為如下create trigger tg_listout
    On outgo
    for insert
    as
    insert into list (listDate,listItem,listCount,listType) Select outgoDate,outgoItem,outgoCount,'out' From inserted
    GO