代码之家  ›  专栏  ›  技术社区  ›  Wei Lin

no`trigger`设置同一表中另一列的默认值

  •  1
  • Wei Lin  · 技术社区  · 6 年前

    可以用不可以 trigger 是否从同一表中的另一列设置列的默认值?

    简单演示如下:

    DDL:

    CREATE TABLE temp_T (col1 INT, col2 INT);  
    
    ALTER TABLE temp_T  
        ADD CONSTRAINT col1_def DEFAULT col2 * 2 FOR col1; 
    
    INSERT INTO temp_T (col2) VALUES (7); 
    

    我得到这个错误:

    消息128级别15状态1行2
    在此上下文中不允许使用名称“col2”。有效表达式包括常量、常量表达式和(在某些上下文中)变量。不允许使用列名。

    我期望这些值:

    col1   col2
    ------------
     14      7
    

    Online TestDemo

    3 回复  |  直到 6 年前
        1
  •  3
  •   marc_s    6 年前

    CREATE TABLE temp_T (col1 INT, col2 AS col1 * 2 PERSISTED);  
    

    INSERT INTO temp_T (col1) VALUES (7);
    

    col1 col2

        2
  •  1
  •   DavidG    6 年前
        3
  •  1
  •   Hooman Bahreini    6 年前

    DEFAULT VALUE

    select col1, 2 * col1 as computed_col2 from temp_T
    

    select 
        col1, 
        case when col2 is null then col1 * 2 else col2 end as col2
    from 
        temp_T
    

    trigger