Shi*_*hin 1 trigger sql-server update sql-server-2014
使用 SQL Server 2014,我有这个:
Table1
Tab1_id int identity(1,1) primary key
Tab1_val1 smallint
Tab1_val2 smallint
Tab1_valInfo varchar(10) -- not yet implemented, will be used only for presentation
Run Code Online (Sandbox Code Playgroud)
Tab1_id | Tab1_val1 | Tab1_val2 | Tab1_valInfo
---------|-------------|-------------|--------------
1 | 25 | 19 | 0025-0019
2 | 0 | 5 | 0000-0005
3 | 12 | 3 | 0012-0003
Run Code Online (Sandbox Code Playgroud)
现在,凭借我相当短的 SQL 经验,我正在尝试的是:
在应用程序中,插入数据所需的唯一输入值是Tab1_val1和Tab1_val2,然后创建一个更新列的触发器Tab1_valInfo。
create trigger utr_ValInfo on Table1
after insert as
begin
declare @size int = 4;
declare @valInfo varchar(10) =
select right('0000' + convert(varchar, /* insertedRow.Tab1_val1 */), @size) from inserted
+ '-' +
select right('0000' + convert(varchar, /* insertedRow.Tab1_val2 */), @size) from inserted;
update Table1 set Tab1_valInfo = @valInfo where /* this is the last inserted row*/;
end;
Run Code Online (Sandbox Code Playgroud)
一次插入可能涉及多行。
我希望我想要实现的目标是明确的。
尝试这个
create trigger utr_ValInfo on Table1
after insert as
begin
declare @size int = 4;
UPDATE Table1
SET
Tab1_valInfo = right('0000' + convert(varchar, i.Tab1_val1), @size)
+ '-' +
right('0000' + convert(varchar, i.Tab1_val2), @size)
FROM Inserted i
WHERE
Table1.Tab1_id= i.Tab1_id;
end;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
22619 次 |
| 最近记录: |