MySQL插入唯一且仅在条件为真时插入

时间:2012-08-14 16:50:32

标签: mysql sql

我有一个名为 batch1 的表格,其中只有一列 id ,这是主键。

我可以使用以下查询将数据插入其中。

INSERT INTO batch1 VALUES(NULL);

现在我需要为此表设置记录限制,因此它只能插入所需的行数。例如,如果将limit设置为 1000 ,则上表不得在其上方插入更多记录并给出错误。

我在其他表中存储限制。除了LOCKS,我的选择是什么?

2 个答案:

答案 0 :(得分:2)

基于Andomar的回答,它为我的MySQL版本引发了语法错误:

insert  into batch1 (id)
select  null
from    (
        select  count(*) as num
        from    batch1
        ) as counted
where   counted.num < 1000;

这从派生表中选择,使用结果从外部select中返回一行或零行。

答案 1 :(得分:0)

您可以使用where子句来阻止不需要的更新:

insert  into batch1 
select  null
where   (
        select  count(*)
        from    batch1
        ) < 1000

您可以使用row_count测试更新是否通过:

select  row_count() as InsertedRecords;