如果相同的列值插入超过10行,则中止插入 - mysql-php

问题描述:

我有一个任务。我必须插入几列到一个MySQL表。如果相同的列值插入超过10行,则中止插入 - mysql-php

insert into `alreadysent` VALUES (NULL,'".$mobile_number."','".$user."','".$sender."','".date('Y-m-d H:i:s')."'); 

如果同样的mobile_number被插入10次,它应该接受。但它不应该在第10次插入该移动号码后接受。

如果count小于10,我会很容易地使用select语句并插入。但是我不能在这个senario中做。所以检查一些其他的最佳选择。如果我们将列声明为唯一的,那么我们可以停止在重复条目中插入,类似地,在n个插入之后是否有任何可以给出异常的东西?谢谢!

+7

这是业务逻辑,不应该在SQL查询。把它放到你的php代码中 – Jens

+1

了解准备好的语句以防止SQL注入 – Jens

+1

为什么在插入之前你不能选择和计数? – BeetleJuice

你可以有条件插入这样的尝试:

INSERT INTO TABLENAME(MOBILENUMBER, USER, SENDER, DATE) 
SELECT 'XXXX', 'XXXX', 'XXXX', 'XXXX' 
    FROM DUAL 
    WHERE (SELECT COUNT(*) FROM TABLENAME 
         WHERE MOBILENUMBER = 'XXXX') < 10 

你可以做这样的事情:

DECLARE @cnt INT 

SELECT @cnt = COUNT(*) FROM table_name where mobile_number = '".$mobile_number."' 

IF @cnt < 10 

INSERT INTO table_name VALUES(col1, col2, col3 .....)