Mysql - CAST 的唯一约束(TIMESTAMP as DATE)

标签 mysql sql unique-constraint

我的 MYSQL 表中有一个 TIMESTAMP myDate 字段。

有没有一种方法可以为 myDate 中的每一 day 定义一个唯一的字符串 stringForTheDay

类似于:

UNIQUE(stringForTheDay, day_in_mydate)

简而言之,不能允许这两行:

2012-11-29 13:35:53      samestring
2012-11-29 20:39:09      samestring

最佳答案

我认为最好的办法是将日期部分复制到单独的列中,并在其上添加唯一约束。您可以使用触发器使日期部分保持最新:

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);

(参见 §18.3 "Using Triggers" in the MySQL 5.6 Reference Manual 。)

关于Mysql - CAST 的唯一约束(TIMESTAMP as DATE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027783/

相关文章:

mysql - 使用 SQL 从数据库过滤数据

php - MySQL - 连接两个表并打印重复项

mysql - 跨服务器中的所有数据库运行查询

java - 如何在Excel中动态汇总工作时间?

python - 从 SQL 结果创建 pandas 数据框

java - Servlet 捕获唯一约束异常

php - Symfony2 查询生成器 "SELECT where sum children > 0"

php - 更新数据库行

postgresql - 陷阱特定的命名唯一约束异常

mysql - 闭包树中 sibling 的唯一名称约束