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

    评论

报告相同问题?

悬赏问题

  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码