這裏是我的PostgreSQL代碼創建觸發器的功能是psql的「語法錯誤或接近‘創建’」
CREATE FUNCTION connectedExhibitionFunction()
RETURNS trigger AS
$$
BEGIN
IF (SELECT COUNT("exName") FROM Exhibitions WHERE NEW."exName" = "exName") > 0 THEN
IF (SELECT Count(doorLoc1) FROM Doors, ExhibitionLocations WHERE (dorLoc1=NEW.elLocation AND dorLoc2=elLocations) OR (dorLoc2=NEW.elLocation AND dorLoc1=elLocations) > 0 THEN
RAISE EXCEPTION 'You can't have the exhibition there, the same exhibition is in an unconnected room';
END IF;
END IF;
END;
$$
LANGUAGE plpgsql;
CREATE TRIGGER connectedExhibitionTrigger
BEFORE INSERT
ON ExhibitionsLocations
EXECUTE PROCEDURE connectedExhibitionFunction();
這是我得到
psql:file.txt:62: ERROR: syntax error at or near "CREATE"
LINE 8: CREATE FUNCTION connectedExhibitionFunction()
^
psql:file.txt:67: ERROR: current transaction is aborted, commands ignored until end of transaction block
我不能錯誤似乎找出錯誤,任何人都可以在這裏找到任何東西?
錯誤說'行8'。我猜測它之前的語句缺少分號。 –
對我而言,觸發器應該做什麼並不是100%清楚,但在我看來,您正試圖通過這種方式創建一個獨特的約束。爲什麼不簡單地創建一個唯一的索引?並且應該真正學會使用明確的'JOIN'運算符,而不是'where子句中古老的,過時的和脆弱的隱式連接 –