drop table if exists `auth_assignment`;
drop table if exists `auth_item_child`;
drop table if exists `auth_item`;
drop table if exists `auth_rule`;
create table `auth_rule`
( `name` varchar(64) not null,
`data` text,
`created_at` integer,
`updated_at` integer,
primary key (`name`)
) engine innodb;
create table `auth_item`
( `name` varchar(64) not null,
`type` integer not null,
`description` text,
`rule_name` varchar(64),
`data` text,
`created_at` integer,
`updated_at` integer,
primary key (`name`),
foreign key (`rule_name`) references `auth_rule` (`name`) on delete set null on update cascade,
key `type` (`type`)
) engine innodb;
create table `auth_item_child`
( `parent` varchar(64) not null,
`child` varchar(64) not null,
primary key (`parent`, `child`),
foreign key (`parent`) references `auth_item` (`name`) on delete cascade on update cascade,
foreign key (`child`) references `auth_item` (`name`) on delete cascade on update cascade
) engine innodb;
create table `auth_assignment`
( `item_name` varchar(64) not null,
`user_id` varchar(64) not null,
`created_at` integer,
primary key (`item_name`, `user_id`),
foreign key (`item_name`) references `auth_item` (`name`) on delete cascade on update cascade
) engine innodb;
auth_rule表沒做任何關聯,可直接插入
插入auth_item表
insert into auth_item value('item_name1',1,'item_description','rule_name1','data',0,0);
insert into auth_item value('item_name2',1,'item_description','rule_name2','data',0,0);
insert into auth_item value('item_name3',1,'item_description','rule_name3','data',0,0);
insert into auth_item value('item_name4',1,'item_description','rule_name4','data',0,0);
insert into auth_item value('item_name5',1,'item_description','rule_name5','data',0,0);
但只插成功了3條,因為auth_item表中rule_name4和rule_name5沒有在auth_rule中存在,相關語句
插入auth_item_child表
insert into auth_item_child value('item_name1','item_name2');
insert into auth_item_child value('item_name3','item_name4');
會提示第二條插入不成功
當我們修改auth_rule表時
update auth_rule set name='rule_name11' where name='rule_name1'
相關表auth_item已會發生變化
mysql欄位簡索引 MySQL中索引使用簡例
一張表最多不超過4個索引 某個欄位的值離散度越高,該字段越適合做索引的關鍵字。占用儲存空間少的字段更適合選做索引的關鍵字。較頻繁的作為where查詢條件的字段應該建立索引,分組字段或者排序字段應該建立索引,兩個表的連線字段應該建立索引。更新頻繁的字段不適合做索引,不會出現在where中的字段不應該建...
MySQL之索引 索引欄位的選取
日常在建資料表的時候,通常會在where,group by,order by等常用的字段上建立索引,當有多個字段時候,有一項原則就是該字段的去重後的值個數越多,索引建立的必要性越強。這裡建立一張資料表,有staff id和leader id兩個字段,通過explain分析可以驗證哪個欄位更適合做索引...
MySQL表字段加索引
新增普通索引 此時key型別為mul alter table table name add index column column 例如 alter table poicity add index delete flag delete flag 新增主鍵索引 primary key alter ta...