用觸發器實現SQLite的外來鍵約束

2021-08-30 11:46:58 字數 1142 閱讀 1478

最近在做數碼相框上的嵌入式開發,開發過程中使用的sqlite資料庫,但是編碼的過程中,遇到個問題,sqlite不支援外來鍵約束,外來鍵約束會被解析但不會被執行。

參考了網上的做法,自己做了個實驗,用觸發器來實現了sqlite的外來鍵約束。

建表語句:

create table jokeitem

(id integer primary key,

content text,

classid integer

);create table jokeclass

(classid integer primary key,

classname text

); 建立插入觸發器:

create trigger fk_insert

before insert on jokeitem

for each row begin

select raise(rollback,'no this classid in jokeclass')

where (select classid from jokeclass where classid = new.classid) is null;

end;

插入操作的外來鍵支援效果:

[img]

建立更新觸發器:

create trigger fk_update

before update on jokeitem

for each row begin

select raise(rollback,'no this classid in jokeclass')

where (select classid from jokeclass where classid = new.classid) is null;

end;

更新操作的外來鍵支援效果:

[img]

建立刪除觸發器:

create trigger fk_delete

before delete on jokeclass

for each row begin

delete from jokeitem where classid = old.classid;

end;

刪除操作的外來鍵支援效果:

[img]

用觸發器實現SQLite的外來鍵約束

用sqlite的觸發器實現刪除時,要關閉外來鍵,要不然會有出現刪不了外來鍵對應鍵的情況。最近在做數碼相框上的嵌入式開發,開發過程中使用的sqlite資料庫,但是編碼的過程中,遇到個問題,sqlite不支援外來鍵約束,外來鍵約束會被解析但不會被執行。參考了網上的做法,自己做了個實驗,用觸發器來實現了s...

SQL 觸發器 外來鍵約束

1 構造乙個觸發器audit log,在向employees test表中插入一條資料的時候,觸發插入相關的資料到audit中。create table employees test id int primary key not null,name text not null,age int not...

關於自身表外來鍵觸發器的實現

關於自身表外來鍵觸發器的實現 目前遇到這樣乙個外來鍵定義 t girl tb1 constraint fk 1 foreign key r id references tb1 id on delete cascade 目的是對於自己的另外乙個字段進行約束,其實這樣看來,後面的級聯刪除就沒有必要了,因...