MYSQl 聯合惟一約束 根據兩個字段 惟一

CREATE TABLE tb_month_report_chapter_main(
 	`id` INTEGER(11) NOT NULL AUTO_INCREMENT,
 	`record_month` char(7) NOT NULL ,
 	`customer_id` int(11) NOT NULL,
 	PRIMARY KEY(`id`),
	UNIQUE KEY `record_month` (`record_month`, `customer_id`) #建立了聯合惟一約束 當月份和用戶id有重複時會報錯
 );

輸入圖片說明

CREATE TABLE tb_month_report_chapter_main(
 	`id` INTEGER(11) NOT NULL AUTO_INCREMENT,
 	`record_month` char(7) NOT NULL ,
 	`customer_id` int(11) NOT NULL,
 	PRIMARY KEY(`id`),
	UNIQUE KEY `record_month` (`record_month`, `customer_id`) 
 );

CREATE TABLE tb_month_report_chapter_text(
	`id` INTEGER(11) AUTO_INCREMENT NOT NULL PRIMARY KEY,
	`main_id` INTEGER(11),
	`chapter` VARCHAR(10) NOT NULL,
	`text_type` VARCHAR(10) NOT NULL,
	`text_content` VARCHAR(255) DEFAULT NULL,
	FOREIGN KEY(`main_id`) REFERENCES tb_month_report_chapter_main(id) ON DELETE CASCADE ON UPDATE CASCADE
);

CREATE TABLE tb_month_report_chapter_img(
	`id` INTEGER(11) AUTO_INCREMENT NOT NULL PRIMARY KEY,
	`main_id` INTEGER(11),
	`chapter` VARCHAR(10) NOT NULL,
	`img_type` VARCHAR(10) NOT NULL,
	`img` LONGBLOB DEFAULT NULL,
	FOREIGN KEY(`main_id`) REFERENCES tb_month_report_chapter_main(id) ON DELETE CASCADE ON UPDATE CASCADE
);

這個表的關係,經過 主表的惟一標識, 月份和用戶Id肯定惟一,而文字和圖片保存在另外兩個表。code

相關文章
相關標籤/搜索