我想強制用戶指定某個表(sometbl)的更新源,例如 。指定「本地」或「遠程」(對於COL2) - 但這一要求應該發生在數據庫級別檢查時,執行UPDATE
語句,以便:PostgreSQL 8.2:要求在UPDATE語句中存在特定的列
UPDATE sometbl SET col1 = 'abc';
應該拋出錯誤(異常),但:
UPDATE sometbl SET col1 = 'abc', col2 = 'remote';
...將成功。
我試圖爲該表創建BEFORE更新觸發器,但我無法檢查是否顯式設置了NEW.col2的 。
我使用狀態
IF NEW.col2 IS NULL THEN
RAISE EXCEPTION 'you must specify source of this update (local/remote)'
END IF;
但每次,當在更新未指定COL2(UPDATE SET sometbl COL1 = 'ABC')
我在NEW.col2得到了字段的當前值僞var,而不是假設NULL。
是否有任何解決方法來防止UPDATING指定的字段在UPDATE stmt中不存在?
該解決方案將不會在我的情況下工作,因爲在第一個表中的行(或多個)具有有效的外鍵將在更新之前存在,所以即使沒有指定外鍵字段值更新會成功。 – 2009-10-09 13:02:57