Postgresql

INSERT 觸發器因#target 列不等於#expressions 而死亡,但它們相等

  • February 8, 2013

我正在嘗試編寫我的第一個觸發器。它是一個插入觸發器,如下所示:

<b>Fatal error</b>:  postgres7 error: [-1: ERROR:  INSERT has more target columns than expressions at character 78

INSERT INTO
dash_pre_queue
           (ord_obj_guid,
            ord_entry_type_guid,
            client_obj_guid, 
            installer_obj_guid, 
            installer_serial_number, 
            datetime, 
            ord_proc_state_guid,
            created,
            ord_esc_type_guid,
            in_error,
            ord_entry_guid)
SELECT
   (ord_obj_guid,
           NULL,
           client_obj_guid,
           inst_obj.inst_obj_guid,
           inst_obj.installer_serial_number,
           clock_timestamp(),
           ord_proc_state_guid,
           NULL,
           NULL,
           NULL,
           NULL)
   FROM
           ord_obj
   JOIN
           inst_obj ON inst_obj.inst_obj_guid = ord_obj.inst_obj_guid
   WHERE
           ord_obj.ord_obj_guid = NEW.ord_obj_guid

我將錯誤消息留在了頂部。目標表的結構與 INSERT INTO 列匹配。我已經驗證了 NULL 值是允許的。

如果您計算 Insert 子句中的列,它們與 SELECT 語句匹配,但是,我收到上面的錯誤,指出存在某種斷開連接。關於我做錯了什麼的任何想法?

在選擇中刪除列列表周圍的括號。這並不像你認為的那樣。

引用自:https://dba.stackexchange.com/questions/34407