MySQL在两列中强制实现唯一性?

时间:2011-06-24 23:22:49

标签: mysql

我想在数据库中存储三列,禁止重复输入:

('姓名','位置','数据')

这是我到目前为止所做的事情,但它只强制名称的唯一性。

CREATE TABLE IF NOT EXISTS SomeStuff (
Name VARCHAR(200),
Location VARCHAR(200),
Data LONGTEXT,
UNIQUE INDEX (Name)
)

我想要做的是强制使用名称和位置的唯一组合。即如果我要存储这些条目,我希望所有条目都有效:

Toothbrush , Ohio , (DATA)
Bacon , Ohio , (DATA)
Sandwich , Kansas , (DATA)
Sandwich , Ohio , (DATA)
Bacon , Kansas , (DATA)

但是,如果我尝试存储此条目,我希望它无效:

Bacon , Ohio , (DIFFERENT_DATA)    <--Database won't allow this

如何构建表定义来做到这一点?

我定期使用如下所示的行更新(DATA)列:

REPLACE INTO LicenseData (Name, Location, Data)
VALUES ( arg , arg , arg )

在我必须跟踪位置之前,这是有效的,所以现在我无法同时存储( Sandwich , Kansas )( Sandwich , Ohio )

2 个答案:

答案 0 :(得分:3)

您应该为Name, Location对添加唯一键,例如see here

答案 1 :(得分:3)

我比MySql更了解T-SQL,但也许你可以这样做?

CREATE TABLE IF NOT EXISTS SomeStuff (
Name VARCHAR(200),
Location VARCHAR(200),
Data LONGTEXT,
UNIQUE INDEX (Name, Location)
)