我在mysql中編寫了一個觸發器,用於檢查一個人是否能夠檢出另一個庫項目。我設置的結帳限制是3.我需要將其轉換爲Oracle觸發器,但存在很多問題。mysql觸發器到oracle觸發器
這裏是我的MySQL代碼:
DELIMITER //
DROP TRIGGER IF EXISTS library.CheckBorrowsTable//
CREATE TRIGGER CheckBorrowsTable
BEFORE INSERT ON library.Borrows
FOR EACH ROW
BEGIN
IF ((SELECT COUNT(*) FROM library.Borrows WHERE libraryID = new.libraryID) >= 3)THEN
SET new = NULL;
END IF;
END//
DELIMITER ;
這裏是我的Oracle代碼:
IF((SELECT COUNT(libraryID) FROM Borrows WHERE libraryID = :NEW.libraryID) >= 3) THEN
:NEW = NULL;
END IF;
有我的Oracle代碼,但Oracle快捷版其他部分增加的部分(開始,結束等...)
您應該注意,在多用戶場景中,這將不起作用 - 兩個會話可能會爲同一個贊助人插入行,並且兩個會將贊助人表更新爲相同的值,因爲他們不會看到其他會話的更新。您需要序列化訪問顧客表(例如,'CHECK_OUT'首先鎖定行,更新它,插入書,然後提交(釋放鎖))。 – 2010-11-18 00:59:19