我想在数据库中存储三列,禁止重复条目:
( '名称' , '位置' , '数据' )
这是我目前所做的,但它只对名称强制执行唯一性。
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 )
.
最佳答案
我比 MySql 更了解 T-SQL,但也许你可以做到这一点?
CREATE TABLE IF NOT EXISTS SomeStuff (
Name VARCHAR(200),
Location VARCHAR(200),
Data LONGTEXT,
UNIQUE INDEX (Name, Location)
)
关于MySQL 强制跨两列的唯一性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6474700/