请问一下这种条件的触发器该怎么写

XiaoYi96 2016-12-06 04:42:43
sqlserver数据库。假设,表A只有两个字段A_1,A_2,所有数据的A_2目前都为null,我一条条的给A_2加值。当表A中,所有的数据的A_2字段不为null时触发,请问该怎么写
...全文
173 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
XiaoYi96 2016-12-17
  • 打赏
  • 举报
回复
引用 3 楼 qaz2499867 的回复:
触发器很久没接触了,简单说下思路。 首先肯定是Update 触发器,也就是你修改A表数据时触发,条件就是 SELECT COUNT(1) FROM A WHERE A_2 IS NULL 的结果=0
谢谢,我解决了
XiaoYi96 2016-12-17
  • 打赏
  • 举报
回复
引用 2 楼 duanzi_peng 的回复:
这个应该没有方式写,除非在程序中判断 A_2 不为null的数量,达到一个值后 执行其它操作语句。
抱歉,我表达的不清楚,让大家没看懂,我已经写好了,再执行修改的时候,查询一下A_2字段是否都不为空,如果查询出为0条执行就可以了就可以了
XiaoYi96 2016-12-17
  • 打赏
  • 举报
回复
引用 1 楼 nikolaichow 的回复:
没看懂啥意思。 你是不是当A_2非null时触发某一事件? 触发器不可以在A-2是不是全部非空时触发,只能for inset,update,delete 触发器也可以在某一列字段时触发,下例中表示当A_2变动时触发,比如 if update(A_2) begin end
抱歉,我表达的不清楚,我已经写好了,再执行修改的时候,查询一下A_2字段是否都不为空就可以了
痛苦的火龙果 2016-12-07
  • 打赏
  • 举报
回复
引用 6 楼 hanjun0612 的回复:
[quote=引用 5 楼 qaz2499867 的回复:] [quote=引用 4 楼 hanjun0612 的回复:] 可能是这样的
create trigger MyTest
on classes
    for update
as
declare myCount int =0
 select myCount = count(1) from inserted where A_2 is null
    if (myCount=0)
        begin
            触发
        end
    else
        不触发
go
不就是按照我说的写的吗[/quote] 没注意你说的。。。。不过基本的确是通过update触发器[/quote]只是我很久没写过触发器,语法都忘了
正怒月神 2016-12-07
  • 打赏
  • 举报
回复
引用 5 楼 qaz2499867 的回复:
[quote=引用 4 楼 hanjun0612 的回复:] 可能是这样的
create trigger MyTest
on classes
    for update
as
declare myCount int =0
 select myCount = count(1) from inserted where A_2 is null
    if (myCount=0)
        begin
            触发
        end
    else
        不触发
go
不就是按照我说的写的吗[/quote] 没注意你说的。。。。不过基本的确是通过update触发器
痛苦的火龙果 2016-12-07
  • 打赏
  • 举报
回复
引用 4 楼 hanjun0612 的回复:
可能是这样的
create trigger MyTest
on classes
    for update
as
declare myCount int =0
 select myCount = count(1) from inserted where A_2 is null
    if (myCount=0)
        begin
            触发
        end
    else
        不触发
go
不就是按照我说的写的吗
正怒月神 2016-12-07
  • 打赏
  • 举报
回复
可能是这样的
create trigger MyTest
on classes
    for update
as
declare myCount int =0
 select myCount = count(1) from inserted where A_2 is null
    if (myCount=0)
        begin
            触发
        end
    else
        不触发
go
痛苦的火龙果 2016-12-07
  • 打赏
  • 举报
回复
触发器很久没接触了,简单说下思路。 首先肯定是Update 触发器,也就是你修改A表数据时触发,条件就是 SELECT COUNT(1) FROM A WHERE A_2 IS NULL 的结果=0
exception92 2016-12-07
  • 打赏
  • 举报
回复
这个应该没有方式写,除非在程序中判断 A_2 不为null的数量,达到一个值后 执行其它操作语句。
nikolaichow 2016-12-07
  • 打赏
  • 举报
回复
没看懂啥意思。 你是不是当A_2非null时触发某一事件? 触发器不可以在A-2是不是全部非空时触发,只能for inset,update,delete 触发器也可以在某一列字段时触发,下例中表示当A_2变动时触发,比如 if update(A_2) begin end

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧