資料庫的完整性約束及觸發器

2021-08-11 11:25:37 字數 3354 閱讀 3625

資料庫完整性約束

1.約束

(列級約束

)

主鍵

外來鍵

不為空

唯一

default

check(不支援

)

2.觸發器(行級約束

)

在對某些表執行更新操作(

insert,update,delete

)時同時觸發一些其他動作

,對於查詢操作不會觸發任何動作

#查詢系統中的觸發器

select trigger_schema,trigger_name from information_schema.triggers;

#觸發器中不允許執行查詢操作

create trigger trg_01

#建立觸發器 名為

trg_01

after delete

#當執行過刪除後觸發   

before

在之前觸發

on employee

#觸發器繫結到

employee

表中

for each row

#行級觸發

begin

insert into tb_log(msg) values('員工資料被刪除

');

end;

#刪除觸發器

drop trigger trg_01;

#複製表

(包括結構資料

)

#create table emp_off as select num,name,tel,email,depno,birth from employee;

#複製表結構

#create table emp_temp as select * from employee limit 0,0;

/*

mysql不允許在同一張表上繫結多個同型別觸發器(同時做刪除,更新,新增)

有一張離職員工表,內部的資料根據員工表刪除操作做記錄

*/

create trigger trg_empoff

after delete

on employee

for each row

begin

#new  old

insert into emp_off(num,name,tel,email,depno,birth) values(old.num,old.name,old.tel,old.email,old.depno,old.birth);

end;

/*

建立乙個觸發器,在員工表上,做修改操作之前,將原來記錄行以及修改後的記錄資料儲存到另乙個表中

*/

create trigger trg_modify

before update

on employee

for each row

begin

#新增老資料

insert into emp_temp(num,name,tel,depno,bak) values(old.num,old.name,old.tel,old.depno,'old data');

#新增新資料

insert into emp_temp(num,name,tel,depno,bak) values(new.num,new.name,new.tel,new.depno,'new data');

end

/*

利用觸發器解除約束關係

為部門表新增觸發器,當刪除部門表中記錄時,修改員工表關聯當前部門,將員工的部門設定為null

*/

create trigger trg_del_dept

before delete

on department

for each row

begin

update employee set depno=null where depno=old.depno;

end;

資料庫 完整性約束

問題描述 現有乙個商店的資料庫 shopping 記錄客戶及其購物情況,由以下四個關係組成 a 客戶表customer 儲存客戶資訊,包括客戶號customerid 客戶姓名cname 位址address 電子郵件email 性別gender 身份證號cardid 號碼telcode。b 商品表go...

資料庫的完整性約束

一 資料庫的完整性約束定義 資料庫的完整性約束是為了防止不符合規範的資料進入資料庫,在使用者對資料進行插入 修改 刪除等操作時,dbms自動按照一定的約束條件對資料進行監測,使不符合規範的資料不能進入資料庫,以確保資料庫中儲存的資料正確 有效 相容。資料庫的完整性約束包括 1 實體完整性 規定表的每...

資料庫的完整性約束

完整性約束條件的作用物件 元組 或稱作 row,一條資料 約束 表級約束 外來鍵 實體完整性 實體的完整性是通過主鍵 primary key 約束和候選鍵 candidate key 約束來實現的。所以前提條件是要了解鍵的一些概念和分類 舉個例子 例如有 students 表,含有字段 stu nu...