mysql 動態插入 MySql條件插入動態值

2021-10-22 03:18:29 字數 2257 閱讀 3805

所以在我解釋我的問題之前,這裡有一些**定義,以幫助說明我的問題:

-- holds data about different memberships

create table if not exists `member_types` (

`id` int unsigned not null auto_increment,

`name` varchar(20) not null,

`description` varchar(255) not null,

`member_limit` tinyint(2) unsigned not null default '0',

primary key( `id` )

) engine=innodb default charset=latin1;

insert into `member_types` ( `id`, `name`, `description`, `member_limit` ) values

( 1, 'general member', 'description of this membership.', 00 ),

( 2, 'extended member', 'description of this membership.', 00 ),

( 3, 'premium member', 'description of this membership.', 00),

( 4, 'general administrator', 'description of this membership.', 05 ),

( 5, 'master administrator', 'description of this membership.', 01 );

-- stores the basic data about our site members

create table if not exists `member_infos` (

`id` bigint(8) unsigned zerofill not null auto_increment,

`username` varchar(30) not null unique,

`password` char(41) not null,

`emailaddr` varchar(100) not null,

`type_id` int unsigned not null,

`salt_id` bigint(8) unsigned zerofill not null,

primary key( `id` ),

foreign key( `type_id` ) references `member_types` ( `id` )

) engine=innodb default charset=latin1;

member_infos表包含繫結member_infos.type_id = member_types.id的外來鍵

member_types表有乙個member_limit列,其中包含乙個整數,表示member_infos表的最大記錄數

可以包含其type_id等於member_types.id的位置

我能夠寫乙個檢查約束,但顯然mysql不會檢查約束.

我想編寫乙個觸發器,在插入之前檢查member_infos表中的記錄數是< = member_types.member_limit.

例如:使用上面的資料,記錄4有乙個member_limit = 5.如果嘗試將新記錄插入member_infos表中

具有type_id = 4並且number_id <= 5的member_infos表中的記錄數比插入的資料多,否則它被拒絕.

任何建議將不勝感激.

解決方法:

您可以編寫自己的普通查詢來檢查插入前的「約束」,而不是觸發器.嘗試:

insert into member_infos

select 1, 'timothy', 'secret', '[email protected]', 5, 0

from dual

where (select count(*) from member_infos where type_id = 5)

(select member_limit from member_types where id = 5)

我已經習慣了在type_id = 5的情況下進行檢查.如果不滿足count條件,則忽略此條件,僅當member_info中型別為id = 5的條目成員數小於member_types表中設定的限制時才會插入

標籤:mysql,sql

mysql插入 mysql條件插入

新建表 create table t user usernamevarchar 100 gender varchar 2 帶條件插入,如果表中沒有username name1 的記錄,就插入,否則就不插入 insert into t user select name1 m from dual whe...

mysql 插入更新一條sql 搞定

插入資料時,我們經常會遇到這樣的情況 1 首先判斷資料是否存在 2 如果不存在,則插入 3 如果存在,則更新。在sql server中可以這樣處理 if not exists select 1 from t where id 1 insert into t id,update time values...

mysql插入資料寫法 mysql 批量插入資料

mysql使用insert插入多條記錄,應該如何操作呢?下面就為您詳細介紹mysql使用insert插入多條記錄的實現方法,供您參考。看到這個標題也許大家會問,這有什麼好說的,呼叫多次insert語句不就可以插入多條記錄了嗎!但使用這種方法要增加伺服器的負荷,因為,執行每一次sql伺服器都要同樣對s...