我想阻止用戶(所有人)更新主題的特定列以防止循環依賴。PostgreSQL阻止更新列每個人
CREATE TABLE Topic(
id serial NOT NULL PRIMARY KEY,
contenxt text DEFAULT NULL, -- can be freely updated
Dependency1 serial REFERENCES Topic(id) ON DELETE RESTRICT, -- CAN'T be updated
Dependency2 serial REFERENCES Topic(id) ON DELETE RESTRICT, -- CAN'T be updated
);
DENY UPDATE ON Topic(Dependency1) TO *; -- Here
DENY UPDATE ON Topic(Dependency2) TO *;
但嘗試了幾個變體後,它似乎總是報告一些語法錯誤。解決這個問題開始很無聊。可選的解決方案是受歡迎的,但我認爲這個解決方案相當簡單(因爲你知道u.u的確切語法)。
在評論中提出了一個觸發器,但我不知道如何通過觸發器來實現。
觸發器怎麼樣?有了它,你可以防止超級用戶的更新。 – 2015-02-09 17:05:00
主題表具有可更新的其他字段(「內容」爲文本),因此觸發器應只保留對「依賴性」字段進行的更改。如果不可能,只要告訴我將「內容」移動到另一個表格。這只是我從來沒有使用過觸發器,所以我不知道從哪裏開始 – GameDeveloper 2015-02-09 17:21:02
查看答案。在postgresql中,你可以在列上使用觸發器。只有當價值真的不同時,你纔可以用它來提高信息。如果需要.. – 2015-02-09 17:24:20