在 sqlite 資料庫或 sqlitebrowser 中,在 linux 中,如何使列寫保護?
我正在打開 sqlite 瀏覽器。我創建一個表。然后,一些列。例如。A列必須寫保護。但不存在這樣的“選項”,因為存在“唯一鍵”選項或“非空”選項。
所以,我可以添加一些代碼,使其不插入其他條目,也不修改此列。
我怎么能這樣做?
uj5u.com熱心網友回復:
在 SQLite中沒有將列定義為寫保護這樣的事情。
在表中插入所需的所有行后,您可以創建一個不允許再插入的觸發器和另一個不允許對特定列進行任何更新的觸發器:
CREATE TRIGGER no_more_rows BEFORE INSERT ON tablename
BEGIN
SELECT RAISE(ABORT, 'No more rows allowed');
END;
CREATE TRIGGER no_updates BEFORE UPDATE ON tablename
BEGIN
SELECT
CASE
WHEN NEW.col IS NOT old.col THEN RAISE(ABORT, 'Update of col is not allowed')
END;
END;
更改表tablename和col列的名稱。
請參閱演示。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/442090.html
