資料庫完整性約束
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...