在我們使用 mysql 插入資料時,假如我們插入性別,就只能插入『男』、『女』,或者插入資料控制在一定範圍內,我們都會使用 check 檢查約束來實現。
問題:mysql 所有的儲存引擎都不支援 check 約束,mysql中可以寫 check 約束,但會忽略它的作用,因此 check 並不起作用,因此實現對資料約束有兩種方法:
在這裡我們主要解釋第一種的 enum 型別或者觸發器如何實現 check約束作用;
enum 控制選項:
具體用法講解可參考 mysql 資料型別 enum
create
table
person
( id tinyint(4
)not
null
auto_increment
, name varchar(16
)not
null
, *** enum
('男'
,'女'
)not
null
primary
key(id)
)engine
=innodb default
charset
=utf8;
insert
into
person
(name, ***)
values
('luchi1'
,'男');
insert
into
person
(name, ***)
values
('luchi2'
,'女');
insert
into
person
(name, ***)
values
('luchi3'
,'中'
如圖所示,*** 只能插入男,女;
觸發器控制範圍:
在這裡我們把錶加上乙個字段年齡
alter
table person add age tinyint(4
)not
null
;
建立觸發器,控制當年齡 <0 或者 >120 時不能插入:
delimiter $$
create
trigger before_age_insert
before
insert
on person for
each
rowbeginif(
new.age <0or
new.age>
120)
then
delete
from person where age =
new.age;
endif
;end$$
delimiter
;
測試:
truncate
table person;
--清空表
insert
into
person
(name, ***, age)
values
('luchi1'
,'男'
,'21');
insert
into
person
(name, ***, age)
values
('luchi2'
,'女'
會發現當插入資料不符合資料範圍時插入不會成功;
SpringCloud Zuul閘道器功能實現解析
簡介 api gateway,時系統的唯一對外的入口,介於客戶端和服務端之間的中間層,處理非業務功能,提供路由請求,鑑權,監控,快取,限流等功能 1.新增依賴 注意springboot和springcloud版本相容 org.springframework.cloud spring cloud st...
青軟實訓1 約束
oracle約束,一般是在重要主鍵約束用的,但是使用約束得考慮實際的情況,因為是要影響到效能的問題,使用不當會影響到資料的使用。oracle約束有五種,分別是 主鍵約束 primary key 乙個表中只有乙個主鍵,而且主鍵是唯一的,不可重複,其實也相當於唯一性約束 unique 和非空約束 not...
Mongodb分片 Sharding 功能實現
在mongodb裡面存在另一種集群,就是分片技術,可以滿足mongodb資料量大量增長的需求。當mongodb儲存海量的資料時,一台機器可能不足以儲存資料,也可能不足以提供可接受的讀寫吞吐量。這時,我們就可以通過在多台機器上分割資料,使得資料庫系統能儲存和處理更多的資料。下圖展示了在mongodb中...