【发布时间】:2014-03-10 01:56:12
【问题描述】:
是否可以有一个由外键fk1、fk2、fk3组成的主键
地点:
fk1永远不应为空fk2和fk3可以为空
我有以下 SQL:
CREATE TABLE role_mappings (
ROLE_NAME VARCHAR(64) NOT NULL,
NESTED_ROLE_NAME VARCHAR(64) DEFAULT NULL,
PRIVILEGE_NAME VARCHAR(64) DEFAULT NULL,
PRIMARY KEY (ROLE_NAME, NESTED_ROLE_NAME, PRIVILEGE_NAME),
CONSTRAINT fk_access_roles_rm_1 FOREIGN KEY (ROLE_NAME) REFERENCES access_roles (ROLE_NAME),
CONSTRAINT fk_access_privileges FOREIGN KEY (PRIVILEGE_NAME) REFERENCES access_privileges(PRIVILEGE_NAME),
CONSTRAINT fk_access_roles_rm_2 FOREIGN KEY (NESTED_ROLE_NAME) REFERENCES access_roles(ROLE_NAME)
);
当我将NULL 插入NESTED_ROLE_NAME 或PRIVILEGE_NAME 时,我得到:
Column 'NESTED_ROLE_NAME' cannot accept a NULL value.
这样做的正确方法是什么?
【问题讨论】: