我是MySQL WB的新手,所以我可以通过添加依赖表之间的关系来创建外键。
但是如何创建复合键? 例如,我有这个表sql
CREATE TABLE TASKS
(
TEST_ID NUMBER(6) CONSTRAINT FK_TASKS_TESTS REFERENCES TESTS(TEST_ID),
TASK_ID NUMBER(3),
MAX_POINTS NUMBER,
CONSTRAINT PK_TASKS PRIMARY KEY (TEST_ID, TASK_ID)
);
是否有这样的选项,否则应该创建它?
答案 0 :(得分:4)
问题归结为独特性。如果您知道TASK_ID将是唯一的,那么最好将一列作为主键。 MySQL允许使用多列主键,但如果TASK_ID是唯一的,只需将其作为主键并在TEST_ID上添加另一个索引即可。主键的语法是:
CREATE TABLE TASKS
(
TEST_ID NUMBER(6),
TASK_ID NUMBER(3),
MAX_POINTS NUMBER,
PRIMARY_KEY(TASK_ID) -- OR PRIMARY_KEY(TASK_ID, TEST_ID) for the composite key
);
有关详细信息,请参阅this discussion。
答案 1 :(得分:3)
首先是外键约束,我不认为它应该放在那里。据我所知,所有的约束都是在变量声明后声明的(一般是sql的规范之一) 对于你几乎拥有它的复合键,你只有一个错误就是编写Contraint。这是工作的例子
CREATE TABLE IF NOT EXISTS TASK (
TEST_ID NUMBER(6) ,
TASK_ID NUMBER(3) ,
MAX_POINTS NUMBER ,
PRIMARY KEY (TEST_ID,TASK_ID),
CONSTRAINT fk_1 FOREIGN KEY (`TEST_ID`) REFERENCES TEST (TEST_ID)
)
答案 2 :(得分:0)
假设您已经创建了一个表,现在可以使用此查询来创建复合主键
alter table employee add主键(emp_id,emp_name);