1
我需要將我的Informix函數轉換爲PostgreSQL。問題是我知道PostgreSQL不允許在函數中調用BEGIN WORK和COMMIT,所以我不知道如何處理我的異常並以這種方式回滾。Informix到PostgreSQL - 交易功能
功能,我想轉換看起來像這樣:
CREATE PROCEDURE buyTicket(pFlightId LIKE transaction.flightId, pAmount LIKE transaction.amount)
DEFINE sqle, isame INTEGER;
DEFINE errdata CHAR(80);
ON EXCEPTION SET sqle, isame, errdata
ROLLBACK WORK;
IF sqle = -530 AND errdata LIKE '%chkfreespots%' THEN
RAISE EXCEPTION -746, 0, 'Not enough free spots';
ELSE
RAISE EXCEPTION sqle, isame, errdata;
END IF
END EXCEPTION;
BEGIN WORK;
INSERT INTO transaction VALUES (0, pFlightId, pAmount);
UPDATE tickets SET freeSpots= freeSpots - pAmount
WHERE flightId = pFlightId;
COMMIT WORK;
END PROCEDURE;
你可以發佈你的,你婉轉換爲function.And誰告訴你,你不能處理內部函數交易初始查詢? – Houari
看看[這個答案](http://stackoverflow.com/a/24523639/1216680)作爲關於函數內部交易的起點。 – Houari
我想轉換這2個查詢(INSERT和UPDATE),在SQL中我想要轉換爲PostgreSQL的功能齊全。當我想在函數內執行PostgreSQL中的BEGIN WORK時,我得到一個錯誤,你不能在函數內部使用它。 – TranceFusion