php - 限制将记录插入到 phpmyadmin wamp 中的表中

标签 php mysql phpmyadmin

我正在使用 WAMP。下面是限制表中记录插入的触发器的代码。它给出错误 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在“TRIGGER abc”附近使用的正确语法。

请帮助我。

CREATE OR REPLACE TRIGGER abc
BEFORE INSERT
  ON my_table
FOR EACH ROW
DECLARE
  v_row_cnt TINYINT(3);
BEGIN

  SELECT COUNT(*) INTO v_row_cnt FROM login_db;

  IF v_row_cnt > 10 THEN
     DELETE FROM my_table ORDER BY id desc LIMIT 1;
  END IF;

END;

最佳答案

正如错误消息所述,错误是代码中存在单词trigger 的位置,并且位于单词create 或replace 的旁边。

因此,您需要在mysql中使用DROP,而不是replace,例如DROP TRIGGER IF EXISTS abc。是的,必须使用DELIMITER请参阅以下两个示例

DROP TRIGGER IF EXISTS abc;
DELIMITER |
CREATE TRIGGER abc
BEGIN    
     IF (SELECT COUNT(*) FROM login_db) > 10 THEN //method 3
        DELETE FROM my_table ORDER BY id desc LIMIT 1;
     END IF;
END |
DELIMITER;

DELIMITER //
DROP TRIGGER IF EXISTS abc//    
CREATE TRIGGER abc
BEGIN
     set @somvar = (SELECT COUNT(*) FROM login_db);
     IF @somvar > 10 THEN         
        DELETE FROM my_table ORDER BY id desc LIMIT 1;
     END IF;
END //
DELIMITER;

关于php - 限制将记录插入到 phpmyadmin wamp 中的表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31804701/

相关文章:

mysql - 为什么 SQL 声明失败?

php - 外键 mysql 和 phpmyadmin

php - 没有下一个结果集。请调用 mysqli_more_results()/mysqli::more_results() 检查是否调用此函数/方法

php - 多个 INSERT 的输出消息 - mysql

php - 在抽象类中声明的方法中从子项中获取常量覆盖

php - 通过 PHP 更新 MySQL 数据库的一行的频率是多少?

php - MySQL统计一张表中最大的引用路径

php - PHPMYADMIN 中的 SQL 错误

mysql - 我如何为一个人进行触发更新

PHP 数字数组顺序