更新案例中的信号SQLSTATE

更新案例中的信号SQLSTATE,sql,triggers,db2,sql-update,Sql,Triggers,Db2,Sql Update,我不能在球场上尝试扳机,我有一个问题。我试着寻找答案,但没有成功。那么,有没有可能在DB2触发器的更新案例中放置一个“SIGNAL SQLSTATE…”呢 例如: CREATE TRIGGER T1 [...] BEGIN ATOMIC UPDATE Table SET column = CASE WHEN [...] THEN SIGNAL SQLSTATE '70000' ('ERROR') ELSE [...] 提前感谢。CAS

我不能在球场上尝试扳机,我有一个问题。我试着寻找答案,但没有成功。那么,有没有可能在DB2触发器的更新案例中放置一个“SIGNAL SQLSTATE…”呢

例如:

CREATE TRIGGER T1
[...]
BEGIN ATOMIC

UPDATE Table
  SET column = 
    CASE
      WHEN [...] 
        THEN SIGNAL SQLSTATE '70000' ('ERROR')
      ELSE 
[...]
提前感谢。

CASE表达式不能在UPDATE语句中执行语句。它只返回一个结果值。如果您想执行诸如
SIGNAL SQLSTATE…
之类的语句,我想您可以这样使用它(不推荐也不测试):

但是,这样做可能更好:

IF ( [...condition] )
   THEN SIGNAL SQLSTATE '70000' ('ERROR') ;
   ELSE UPDATE Table  SET column = [...value] ;

如果没有更详细的确切说明,就很难确定需要什么。

将其作为结果表达式放在CASE表达式中,意味着您希望将列设置为等于
SIGNAL SQLSTATE“70000”(“ERROR”)
。这毫无意义,对!我认为这是一个可以接受的答案。谢谢。@user2338816请用您所写的作为评论写一个答案。
IF ( [...condition] )
   THEN SIGNAL SQLSTATE '70000' ('ERROR') ;
   ELSE UPDATE Table  SET column = [...value] ;