fuwenjie2004 2016-01-03 04:40 采纳率: 0%
浏览 2891

SQL触发器在插入记录中根据A字段自动给B字段赋值

假如我有一个人员信息表,表的字段结构如下:
姓名 性别 性别值

性别字段,如果为男,性别值为0;
性别字段,如果为女,性别值为1;
性别字段,如果为中性,性别值为3;

在插入记录的时候,只会插入 姓名和性别两个字段。现在想要通过触发器来自动填充后面一个‘性别值’字段。
这个如何实现呢?求指导。插入的时候,可能一次性插入多条记录。
(MSSQL 2008数据库)

  • 写回答

1条回答 默认 最新

  • AAArlex 2016-01-03 15:05
    关注

    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

    评论

报告相同问题?

悬赏问题

  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题