默认情况下PostgresTRIGGER
的事务性是否像 MySQL 中的(我已经读过)?
我创建了一个TRIGGER
过程,该过程使用一个简单的方法IF
来限制一个列的值,如果超出限制,则TABLE
使用另一个值来限制列的值。UPDATE
我希望它放在一个单曲中,但是如果我用...TRANSACTION
包装IF
... ,它会给出错误THEN UPDATE
BEGIN
COMMIT
SQL error:
ERROR: syntax error at or near ";"
LINE 2: BEGIN;
^
默认情况下是TRIGGER
s吗?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
,而且我读过CHECK
s 不能使用子查询。我想我读到这是要走的路,但我必须透露我是 db noob。