我想要生成一個觸發器,如果表格中的列填充了特定的設置值,例如我有一個名爲'Volunteertype'的專欄,只能分配'學生'的'工作人員',如果學生進入觸發器,則必須取消志願者表中所有與員工詳細信息相關的列,例如'工作區','staffmanager '等下面是代碼,我試圖把利用網站上的資源放在一起,但我沒有運氣。需要sql項目援助
CREATE TRIGGER trg_voltype
ON Volunteer
AFTER INSERT
AS
IF EXISTS (SELECT NULL FROM inserted i WHERE VolunteerType = 'student')
FOR EACH ROW BEGIN;
UPDATE v
SET Area_of_work = NULL
SET StaffManagerName = NULL
SET StaffManagerEmail = NULL
SET StaffManagerPhone = NULL
FROM Volunteer v
JOIN inserted i ON v.Volunteer_id = i.Volunteer_id
WHERE v.VolunteerType = 'student';
END;
然而,當這是在Oracle環境內運行產生錯誤ORA-04071:缺少BEFORE,AFTER或INSTEAD OF關鍵字。當我嘗試將'後插入'轉移到關鍵字前我得到'無效觸發'錯誤
是否有人能夠協助和通知我,如果代碼本身是正確/不正確的,我應該如何去修改代碼,預先感謝,並有一個美好的結束年的感謝!
我刪除了MySQL的標籤 – GurV
看一看在[語法](http://docs.oracle.com/database/122/LNPLS/CREATE-TRIGGER- statement.htm#LNPLS01374) – Aleksej
您的觸發器完全格式錯誤;但你的更新也是如此(你不能加入;你有多個'set'子句......) - 你不應該更新剛創建的行,你應該調整更新前的值觸發。是插入一個單獨的表,還是試圖引用新行的值?我建議你回到文檔來嘗試創建更接近有效的東西,並看看你真的被困住了。 –