Postgresql 无法将数据插入表,因为Postgres中存在触发器

Postgresql 无法将数据插入表,因为Postgres中存在触发器,postgresql,plpgsql,Postgresql,Plpgsql,我创建了一个表ebillname varchar,prev int,curr int。当输入prevreading=currreading的值时,有一个触发器会引发异常。但它也不需要其他数据 -- This is my function CREATE OR REPLACE FUNCTION BILL_CHECK() RETURNS TRIGGER AS $$ BEGIN IF (NEW.PREVREADING=NEW.CURRREADING) THEN RAISE EXCEPTION

我创建了一个表ebillname varchar,prev int,curr int。当输入prevreading=currreading的值时,有一个触发器会引发异常。但它也不需要其他数据

-- This is my function
CREATE OR REPLACE FUNCTION BILL_CHECK() RETURNS TRIGGER AS $$ 
BEGIN
 IF (NEW.PREVREADING=NEW.CURRREADING) THEN
   RAISE EXCEPTION 'Data Entry Error';
 END IF;
RETURN NULL;
END;
$$ LANGUAGE PLPGSQL;

--This is my trigger
CREATE TRIGGER BILL                                          
BEFORE INSERT OR UPDATE ON EBILL
FOR EACH ROW EXECUTE PROCEDURE BILL_CHECK();

INSERT INTO EBILL VALUES('MELVY',7,7);-- Raises Exception. Working.

NSERT INTO EBILL VALUES('MELVY',7,8);-- No change in the table.insert 00
INSERT 0 0

为什么我不能插入第二组pf数据?

问题是您返回NULL

这是中止数据修改的信号

你应该

RETURN NEW;