mysql - MySQL 触发器中的错误#1054

标签 mysql triggers mysql-error-1054

这是我的触发器。

DELIMITER //
CREATE TRIGGER verificare_masa
BEFORE INSERT ON Rezervare
FOR EACH ROW 
BEGIN
IF (NEW.Data_Rezervarii=Data_Rezervarii) AND (NEW.NumarMasa=NumarMasa) THEN 
    SET NEW.NumarMasa= NULL;

END IF;
END //
DELIMITER ;

我想在 1 个表 (rezervare) 上创建触发器。

当我执行触发器时,它已经被创建。但是,当我将数据插入表 rezervare 时,它​​变成了 错误代码:1054。“字段列表”中的未知列“Data_Rezervarii”

我想检查该日期的预订是否已在数据库中 并且已为该日期预留了所需的质量

最佳答案

从您的尝试来看,您似乎仍想插入一个具有相同 Data_Rezervarii 但带有 NumarMasa NULL 的新行。如果是这样,你的触发器应该是这样的

CREATE TRIGGER verificare_masa 
BEFORE INSERT ON Rezervare FOR EACH ROW 
SET NEW.NumarMasa = IF(EXISTS(
  SELECT 1 FROM Rezervare 
  WHERE Data_Rezervarii=NEW.Data_Rezervarii 
    AND NumarMasa = NEW.NumarMasa
  ),NULL,NEW.NumarMasa);

然后它会像这样工作:

MariaDB [test]> select * from Rezervare;
+-----------------+-----------+
| Data_Rezervarii | NumarMasa |
+-----------------+-----------+
| 2016-12-12      |         1 |
| 2016-12-12      |         2 |
| 2016-12-13      |         3 |
+-----------------+-----------+
3 rows in set (0.00 sec)

MariaDB [test]> INSERT INTO Rezervare VALUES ('2016-12-12',1),('2016-12-12',4);
Query OK, 2 rows affected (0.20 sec)
Records: 2  Duplicates: 0  Warnings: 0

MariaDB [test]> select * from Rezervare;
+-----------------+-----------+
| Data_Rezervarii | NumarMasa |
+-----------------+-----------+
| 2016-12-12      |         1 |
| 2016-12-12      |         2 |
| 2016-12-13      |         3 |
| 2016-12-12      |      NULL |
| 2016-12-12      |         4 |
+-----------------+-----------+
5 rows in set (0.00 sec)

但是如果您真的想跳过新记录,如果表中已经存在新记录,应该通过在这两列上添加唯一索引并使用INSERT IGNORE<来完成.

关于mysql - MySQL 触发器中的错误#1054,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40769030/

相关文章:

php - 添加时间并在 PHP 中获取平均值

mysql - 遍历触发器中的临时表

c# - 使用 Entity Framework 和 MVC4 SQL Server 插入后触发器不触发

php - 导入表时未知列名

使用 UNION 时 SQL 查询不起作用?

php - 将 6 个查询合并为 1 个结果集以进行导出?

android - 如何使用 Http POST 请求发送表情符号

MySQL:如何按年份获取活跃成员

sql-server - 触发器是否在 SQL SERVER 中的事务中运行

mysql - 使用左表中的值连接两个表