我的 MYSQL 表中有一个TIMESTAMP myDate
字段。
有没有办法可以stringForTheDay
为每天定义一个唯一的字符串myDate
?
就像是:
UNIQUE(stringForTheDay, day_in_mydate)
简而言之,不能允许这 2 行:
2012-11-29 13:35:53 samestring
2012-11-29 20:39:09 samestring
我的 MYSQL 表中有一个TIMESTAMP myDate
字段。
有没有办法可以stringForTheDay
为每天定义一个唯一的字符串myDate
?
就像是:
UNIQUE(stringForTheDay, day_in_mydate)
简而言之,不能允许这 2 行:
2012-11-29 13:35:53 samestring
2012-11-29 20:39:09 samestring
你不能。
或者,您可以创建另一个数据类型为DATE
only 的列,并使用您的 dateOnly 列和字符串列创建唯一的复合键,
例如
CREATE TABLE Table1
(
`day_in_mydate` datetime,
`stringForTheDay` varchar(10),
`dateControl` date,
UNIQUE (dateControl, stringForTheDay)
)
这里展示了一个完整的例子,
如果您有一个现有的表,上面有记录,但您仍然可以更改它。添加具有DATE
数据类型的列,并执行此查询
ALTER TABLE tableName ADD CONSTRAINT tb_UQ UNIQUE (dateOnlyColumn, stringColumn)
并使用时间戳字段中的值更新表。
UPDATE tableName
SET dateOnlyColumn = DATE(timestampColumn)
我认为您最好的选择是将日期部分复制到单独的列中,并在其上添加唯一约束。您可以使用触发器使日期部分保持最新:
CREATE TRIGGER ins_tablename BEFORE INSERT ON tablename
FOR EACH ROW SET NEW.dateColumn = CAST(NEW.timestampColumn AS DATE);
CREATE TRIGGER upd_tablename BEFORE UPDATE ON tablename
FOR EACH ROW SET NEW.dateColumn = CAST(NEW.timestampColumn AS DATE);