使用以下語句在MSSQL:相當於Oracle中的IF NOT EXISTS嗎?
IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[FK_StationObjectsID]') AND parent_object_id = OBJECT_ID(N'[Attendance]'))
BEGIN
ALTER TABLE Attendance ADD CONSTRAINT FK_StationObjectsID FOREIGN KEY (StationObjectsID) REFERENCES stationobjects (stationobjectsid)
END
在Oracle我想:
IF NOT EXISTS (SELECT * FROM USER_CONSTRAINTS WHERE CONSTRAINT_NAME = 'FK_STATIONOBJECTSID' AND TABLE_NAME = 'ATTENDANCE') THEN
BEGIN
ALTER TABLE Attendance ADD CONSTRAINT FK_StationObjectsID FOREIGN KEY (StationObjectsID) REFERENCES stationobjects (stationobjectsid);
END;
但它給我一個錯誤PLS-00103 「出現符號 'ALTER' ......」
嘗試'立即執行'改變。 。 '''' – GurV
你需要一個帶有動態SQL的PL/SQL塊 –
謝謝GurV,現在又得到了外鍵已經存在的錯誤。似乎IF有什麼問題。當執行SELECT時,它返回一行,但它仍然試圖執行ALTER ... – Powerslave