假如我有一个人员信息表,表的字段结构如下:
姓名 性别 性别值
性别字段,如果为男,性别值为0;
性别字段,如果为女,性别值为1;
性别字段,如果为中性,性别值为3;
在插入记录的时候,只会插入 姓名和性别两个字段。现在想要通过触发器来自动填充后面一个‘性别值’字段。
这个如何实现呢?求指导。插入的时候,可能一次性插入多条记录。
(MSSQL 2008数据库)
假如我有一个人员信息表,表的字段结构如下:
姓名 性别 性别值
性别字段,如果为男,性别值为0;
性别字段,如果为女,性别值为1;
性别字段,如果为中性,性别值为3;
在插入记录的时候,只会插入 姓名和性别两个字段。现在想要通过触发器来自动填充后面一个‘性别值’字段。
这个如何实现呢?求指导。插入的时候,可能一次性插入多条记录。
(MSSQL 2008数据库)
sqlserver貌似是不支持oracle的for each row的所以,这个insert触发器只能触发一次,不过,插入的语句全部都暂时存储到了inserted的临时表中
你可以利用一个指针来遍历这个表实现每行数据的更新,下面这个代码你可以试试
create trigger add_sexnum
on TableName
after insert
as
begin
declare @sex varchar(5);
declare mcursor cursor for select sex from inserted;
open mcursor
fetch next from mcursor into @sex
while @@FETCH_STATUS = 0
begin
if(@sex='男')
begin
//你的操作
end
else
begin
//你的操作
end
fetch next from mcursor into @sex
end
close mcursor
deallocate mcorsor
end
go