【发布时间】:2016-09-12 10:15:10
【问题描述】:
我使用 PHP 动态生成多个值并将它们插入到表中,带有一些值的插入的简化示例:
INSERT INTO table (time1,time2)
VALUES ('08:00','09:00'),('09:00','10:00'),('11:00','12:00');
对于上面的例子,我想阻止它插入:
INSERT INTO table (time1,time2)
VALUES ('08:15','08:45'),('09:30','12:00');
插入多个值时是否可以在 2 列之间进行范围比较?或者我是否需要使用单个插入创建一个循环(出于性能原因我想避免这种情况)?
编辑:我正在使用 PHP 表单提交数据。我猜逻辑步骤是使用 $_POST 值并执行 SELECT 检查时间是否冲突。是在 SELECT 中使用 BETWEEN 还是为 PHP 函数返回所有值是另一回事。
【问题讨论】:
-
为什么? 为什么要把所有的负担都交给mysql?在 php 中检查这个,除了你不能在 insert 语句上放置 WHERE 子句。
-
首先,你的数据库中这些列的数据类型是什么?简化的示例使您看起来像是在使用字符串来注册时间。这样就很难比较任何东西了。
-
@AsheraH 我使用 TIME 作为数据类型
-
@Shaharyar 哦,你的意思是提取所有数据和 PHP 计算?我只是认为有一个更简单的 sql 选项进行比较
-
你说你在php中生成数据,那么为什么不在php中进行比较并在mysql中插入最终的正确数据集。但是如果你还想在mysql中做,你可以使用
insert before trigger来检查要插入的内容并阻止它。但我不建议这样做,因为它的成本。
标签: mysql