如何构造一个 MySQL INSERT 查询,仅在表中已有的满足某些条件的行数小于 20 时执行,否则失败?
也就是说,如果表有 18 行满足条件,那么 INSERT 应该继续。如果表有 23 行满足条件,则 INSERT 应该失败。
为了原子性,我需要在单个查询中表达这一点,所以两个请求不能同时插入,每个请求都在“相信”只有 19 行满足条件。
谢谢。
最佳答案
关于:
INSERT INTO TargetTable(Column1, Column2, ...)
SELECT 'Value For Column 1', 'Value For Column 2', ...
FROM Dual
WHERE (SELECT COUNT(*) FROM TargetTable WHERE ...Some Condition...) < 20;
如果不满足WHERE子句,则不插入行;如果满足 where 子句,则插入一行。
您可以采用相同的机制从另一个表中进行选择(而不是从 DUAL 中选择一行值)。
关于sql - 以 COUNT 为条件的 INSERT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4543277/