2011-06-09 39 views

回答

4

创建一个特殊的触发功能:

CREATE OR REPLACE FUNCTION some_function() 
RETURNS trigger AS $$ 
    BEGIN 
     IF some_condition THEN 
      RAISE EXCEPTION 'Some message for id %', NEW.id; 
     END IF; 
     RETURN NEW; 
    END; 
$$ LANGUAGE plpgsql; 

然后定义一个触发器触发它

CREATE TRIGGER some_trigger 
BEFORE INSERT OR UPDATE ON some_table 
FOR EACH ROW EXECUTE PROCEDURE some_function(); 

当异常升高时,更新将失败。

执行的SQL可能是或任意的复杂性,涉及您喜欢的任何查询或函数。它也可能通过SET NEW.some_column = some_value更改NEW值,甚至更新其他表。

请注意NEW.id只是一个示例列。使用消息中新行(或无)的任何列。

如果检查定位于行,可以考虑使用列约束,如:

CREATE TABLE my_table (
    some_column int CHECK (some_column between 0 and 10), 
    other_column int CHECK (other_column < some_column) 
) 
+0

感谢放荡不羁..我会检查它.. – Raje 2011-06-09 05:20:47

相关问题