2013-11-01 99 views
0

请任何人帮我添加外键(父母子关系) 我有两个表coursemaster和课程主题coursemasteri有2列的课程代码和课程名称和课程主题我有2专栏课程代码和科目代码现在我的目标是如果我或更新coursemaster表即(课程代码)它应反映在课程科目,如果我删除课程主管它不应该删除,除非删除courseubject。如何建立父母子女关系我的sql

我coursemaster表结构

Field Type Collation Attributes Null Default Extra Action 
    id int(11)   No None AUTO_INCREMENT Browse distinct values Change Drop Primary  Unique Index Fulltext 
    course_code varchar(255) latin1_swedish_ci  No   Browse distinct values Change Drop Primary  Unique Index Fulltext 
    course_name varchar(255) latin1_swedish_ci  Yes NULL   Browse distinct values Change Drop Primary  Unique Index Fulltext 

当然受到

Field Type Collation Attributes Null Default Extra Action 
    id int(11)   No None AUTO_INCREMENT Browse distinct values Change Drop Primary  Unique Index Fulltext 
    course_code varchar(255) latin1_swedish_ci  Yes NULL   Browse distinct values Change Drop Primary  Unique Index Fulltext 
    subject_code varchar(255) latin1_swedish_ci  Yes NULL   Browse distinct values Change Drop Primary  Unique Index Fulltext 

回答

0

您可以使用DELETE CASCADE ON UPDATE CASCADE

CREATE TABLE IF NOT EXISTS `coursemaster` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `course_code` varchar(255) DEFAULT NULL, 
    `course_name` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `index-1` (`course_code`) 
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; 


INSERT INTO `coursemaster` (`id`, `course_code`, `course_name`) VALUES 
    (1, '001', 'French'), 
    (2, '009', 'English'); 


CREATE TABLE IF NOT EXISTS `course_subject` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    ` course_code` varchar(255) DEFAULT NULL, 
    ` subject_code` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `FK_1_idx` (` course_code`), 
    CONSTRAINT `FK_1` FOREIGN KEY (` course_code`) REFERENCES `coursemaster` (`course_code`) ON DELETE CASCADE ON UPDATE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1; 


INSERT INTO `course_subject` (`id`, ` course_code`, ` subject_code`) VALUES 
    (1, '009', '4554'); 
+0

感谢answer.but我不想删除课程代码如果课程表出现在课程表中,则为课程管理员。 – user2935177