他作者的独特专辑名称

时间:2014-06-04 17:53:59

标签: tsql duplicates unique uniq

我正在尝试制作两张桌子:一张用于author,另一张用于他们的音乐专辑。

作者不能拥有多个同名专辑。它应该按author ID / name /无论如何工作一次。

不应该允许这样做:

Author | Album name
-------------------
Johny  | FireGrasp
Johny  | FireGrasp

应该允许:

Author | Album name
-------------------
Johny  | FireGrasp
Mandy  | FireGrasp

我应该为它制作程序吗?

我将尝试通过代码应该如何工作来解释它:

insert into Author(Val) VALUES ('John'), ('Mandy');

-- Author_id: 3=John, 4=Marx
insert into Album(Val, Author_id) VALUES ('Firegrasp', 3);
insert into Album(Val, Author_id) VALUES ('Firegrasp', 3); -- This should not work now
insert into Album(Val, Author_id) VALUES ('Firegrasp', 4); -- This should work

1 个答案:

答案 0 :(得分:1)

不确定是否要创建一个表(OR)来查找查询以获取发布的输出。

如果您正在寻找创建表格,那么您可以将Author,Album name设为primary keycomposite PK),以确保Author + Album name的组合始终是唯一的。 primary key(Author, [Album name])

如果您的表格中已经定义了unique(Author, [Album name]),您甚至可以创建一个多列唯一约束,例如PK

(OR)

如果您正在寻找获得所需结果的查询,那么我认为您只需使用distinct关键字即可获得这两项记录中的一项。

考虑到,您的Album表只有这两列(Val, Author_id);创建一个主键,如

create table Album
(Val varchar(20),Author_id int,
CONSTRAINT PK_composite_123 PRIMARY KEY CLUSTERED (Val, Author_id))