在UPDATE CASE中的SIGNAL SQLSTATE

时间:2014-09-12 09:40:36

标签: sql triggers db2 sql-update

我不能在场上试试TRIGGER,我有一个问题。我试过找不到答案的答案。那么,是否可以设置一个" SIGNAL SQLSTATE ..."在DB2 TRIGGER的UPDATE CASE中?

例如:

CREATE TRIGGER T1
[...]
BEGIN ATOMIC

UPDATE Table
  SET column = 
    CASE
      WHEN [...] 
        THEN SIGNAL SQLSTATE '70000' ('ERROR')
      ELSE 
[...]

提前谢谢。

1 个答案:

答案 0 :(得分:1)

CASE-expression 无法在UPDATE语句中执行语句。它只返回结果值。如果你想执行SIGNAL SQLSTATE...之类的语句,我想你可能会像这样使用它(不推荐也不测试):

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

但是,这样做可能更好:

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

如果没有更详细的确切意图,很难确定需要什么。