最近在做數碼相框上的嵌入式開發,開發過程中使用的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 目的是對於自己的另外乙個字段進行約束,其實這樣看來,後面的級聯刪除就沒有必要了,因...