我有一个(简化的)表格,由三列组成:
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT,
foreignID INT NOT NULL,
name VARCHAR NOT NULL
基本上,我想添加一个约束(在数据库级别而不是在应用程序级别),其中每个foreignID只能存在一个唯一的“名称”。例如,给定数据(id,foreignid,name):
1,1,Name1
2,1,Name2
3,1,Name3
4,2,Name1
5,2,Name2
如果用户试图在foreignId 1下插入另一个'Name3',我希望约束失败,但如果用户试图在foreignId 2下插入'Name3',则成功。因此我不能简单地使整个列为UNIQUE。
我很难想出一个SQL表达式来实现这个目标,有人可以帮助我吗?
由于
答案 0 :(得分:3)
在(ForeignID, Name)
上添加唯一约束。确切的语法取决于您的DBMS。对于SQL Server:
CREATE UNIQUE INDEX IndexName ON YourTable (ForeignID, Name)
(术语“唯一约束”,“唯一键”和“唯一索引”的含义大致相同。)
答案 1 :(得分:2)
在这两列上创建复合(多列)键
Create Unique Index MyIndexName On TableName(ForeignID, Name)