And*_*der 3 mysql sql conditional insert count
如何构造一个MySQL INSERT查询,只有在表中已满足某些条件的行数小于20 时才执行,否则失败?
也就是说,如果表有18行满足条件,那么INSERT应该继续.如果表有23行满足条件,那么INSERT应该失败.
对于原子性,我需要在单个查询中表达这一点,因此两个请求不能同时进行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;
Run Code Online (Sandbox Code Playgroud)
如果不满足WHERE子句,则不插入行; 如果满足where子句,则插入一行.
您可以调整相同的机制以从另一个表中进行选择(而不是来自DUAL的单行值).
我唯一能做的就是锁定表、计算记录、执行操作、解锁表。
LOCK TABLES t WRITE;
perform count
decide - to insert or not in your programming language
UNLOCK TABLES;
Run Code Online (Sandbox Code Playgroud)