您好我有一个问题,我主要假设SQL服务器功能。我正在构建一个测试数据库,当我尝试将数据插入到我的表中时,我遇到了一个问题。
图1显示了尝试添加行时出现的错误消息。 https://i.stack.imgur.com/GW3C2.png
图2显示了数据库中的所有关系 //i.stack.imgur.com/7BhHa.png
图3显示了我目前正在尝试更新的表格 //i.stack.imgur.com/3JqtA.png
在表格中我有一个组合的主键(" SDat"和" Kurs")我得到的错误信息表明主键必须是唯一的,但是不明白的是我有第三栏" Elev"这使行unqe,为什么不会SQL服务器我将此行插入表?我已经尝试在Acess中创建相同的数据库并且它可以工作,所以我认为问题是SQL服务器中的东西
关心罗伯特
答案 0 :(得分:0)
主键的定义意味着该值必须是唯一的。因此,如果您在2个字段上有一个组合主键,那么这两个字段上的值必须是唯一的,这意味着它只能有1行。如果您需要对3个字段(SDat,Kurs和Elev)的组合强制执行唯一值,那么您的PK需要包含所有3个字段。
如果你真的需要在表中的很多字段中强制执行唯一约束,我不会使用PK来强制执行,而是使用UNIQUE
约束。
ALTER TABLE tablename ADD CONSTRAINT constraintname UNIQUE (column1, ..., columnn)
然后,您可以为主键创建不同的列,以便在添加列时需要将这些其他列设置为唯一,您不必编辑PK并重建表。