是否可以使用由外键fk1
,fk2
,fk3
其中:
fk1
永远不应该为空
fk2
和fk3
可以为null
我有以下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.
这样做的正确方法是什么?
答案 0 :(得分:2)
主键值必须是唯一的。如果您在构成主键的这些字段中允许空值,则很快会遇到非唯一性问题。使用空值的AVOId将是我的建议。