2013-11-01 155 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