【发布时间】:2020-01-01 14:41:46
【问题描述】:
我有这张桌子
UserProgrammingLanguagesId
UserId,
Name,
ProgrammingLanguageId,
KnowledgeId.
我正在插入属于 FK-PK 关系的 ProgrammingLanguageId 和 KnowledgeId 值。但我不想要,例如,如果一个用户有 ProgrammingLanguageId - 1(Java Script),他的知识是 KnowledgeId - 2 (中级),在该表中具有相同的值。我想在某些用户有 1 和 2 个值时进行设置,以防止重复,因为一个用户可以通过一个知识 id 知道一种编程语言,而不是两个和反向。
这是上传的表格截图 https://ibb.co/sPn5zT7
//i am preventing this and it is working
insert into userPLs values(5,'9d313e61-8fb7-4011-88f0-6494621f43f7','Doe',1,1)
//How can i prevent this insert here?
insert into userPLs values(5,'9d313e61-8fb7-4011-88f0-6494621f43f7','Doe',1,2)
【问题讨论】:
-
ibb.co/sPn5zT7 这是桌子先生
-
简而言之:您希望用户只能为每种编程语言指定 一个 知识级别?你需要一个对
UserId, ProgrammingLanguageId的唯一约束。在这种情况下,KnowledgeId与其属性无关 -
我不明白为什么
Doe,2,1会是无效的,(有人可能是许多语言的初学者)但如果是这样,只需在UserId,KnowledgeId上创建一个唯一约束即可。跨度> -
一名员工不应该掌握一种语言的基础和中级,我该怎么做?
-
请更新您的问题以反映这一点。鉴于表结构,您的要求转化为“每个用户只能指定一种语言”,这转化为
UserId, ProgrammingLanguageId的唯一约束,就像我已经说过的那样
标签: sql sql-server database-indexes