默认情况下PostgresTRIGGER的事务性是否像 MySQL 中的(我已经读过)?
我创建了一个TRIGGER过程,该过程使用一个简单的方法IF来限制一个列的值,如果超出限制,则TABLE使用另一个值来限制列的值。UPDATE
我希望它放在一个单曲中,但是如果我用...TRANSACTION包装IF... ,它会给出错误THEN UPDATEBEGINCOMMIT
SQL error:
ERROR: syntax error at or near ";"
LINE 2: BEGIN;
^
默认情况下是TRIGGERs吗?TRANSACTION如果没有,怎么能做一个TRIGGER人TRANSACTION?
代码
这ON INSERT OR UPDATE是articles:
BEGIN
BEGIN; /* this first TRANSACTION line causes error */
IF (NEW.votes_used > (SELECT votes_available FROM vote_totals
WHERE vote_totals.user_id = NEW.user_id)) THEN
UPDATE articles SET votes_used = (SELECT votes_available FROM vote_totals
WHERE vote_totals.userID = NEW.user_id) WHERE user_id = NEW.user_id;
END IF;
COMMIT; /*last TRANSACTION line */
RETURN NULL;
END;
我宁愿在数据进入之前做 aCHECK或FOREIGN将其扼杀在萌芽状态,但我不知道如何使用 a 来做到这一点FOREIGN,而且我读过CHECKs 不能使用子查询。我想我读到这是要走的路,但我必须透露我是 db noob。