错误 #1109 - 由触发器引起的字段列表中的未知 table
Error #1109 - unknown table in field list caused by trigger
这是我的触发器。
我想触发 1 table (pelayan)。
CREATE DEFINER=`root`@`localhost` TRIGGER `before_insert_pelayanan`
BEFORE INSERT ON `pelayanan` FOR EACH ROW
IF NEW.`ESTIMASI` IS NULL OR NEW.`ESTIMASI` = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 5500
THEN SET NEW.ESTIMASI = 4;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 33000 AND
`dbhpl`.`pelayanan`.`DAYA` >= 6600
THEN SET NEW.ESTIMASI = 15;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 197000 AND
`dbhpl`.`pelayanan`.`DAYA` >= 41500
THEN SET NEW.ESTIMASI = 40;
ELSE SET NEW.ESTIMASI = 100;
END IF
当我执行触发器时,它已经被创建了。但是,当我将数据插入 table pelayanan 时,它变成了
#1109 - Unknown table 'pelayanan' in field list.
我该如何解决这个问题?
我必须删除 dbhpl.pelayanan.DAYA
成为 pelayanan.DAYA
和 DAYA
。但是,它不起作用。
在列名前使用 NEW。这是正确的代码-
mysql>
CREATE DEFINER=`root`@`localhost` TRIGGER `before_insert_pelayanan`
BEFORE INSERT ON `pelayanan` FOR EACH ROW
IF NEW.`ESTIMASI` IS NULL OR NEW.`ESTIMASI` = 0 AND
`NEW`.`DAYA` <= 5500
THEN SET NEW.ESTIMASI = 4;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`NEW`.`DAYA` <= 33000 AND
`NEW`.`DAYA` >= 6600
THEN SET NEW.ESTIMASI = 15;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`NEW`.`DAYA` <= 197000 AND
`NEW`.`DAYA` >= 41500
THEN SET NEW.ESTIMASI = 40;
ELSE SET NEW.ESTIMASI = 100;
END IF
Query OK, 0 rows affected (0.11 sec)
mysql> insert into pelayanan values ();
Query OK, 1 row affected (0.08 sec)
mysql> select * from pelayanan ;
+----------+------+
| ESTIMASI | daya |
+----------+------+
| 4 | NULL |
+----------+------+
1 row in set (0.00 sec)
这是我的触发器。
我想触发 1 table (pelayan)。
CREATE DEFINER=`root`@`localhost` TRIGGER `before_insert_pelayanan`
BEFORE INSERT ON `pelayanan` FOR EACH ROW
IF NEW.`ESTIMASI` IS NULL OR NEW.`ESTIMASI` = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 5500
THEN SET NEW.ESTIMASI = 4;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 33000 AND
`dbhpl`.`pelayanan`.`DAYA` >= 6600
THEN SET NEW.ESTIMASI = 15;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`dbhpl`.`pelayanan`.`DAYA` <= 197000 AND
`dbhpl`.`pelayanan`.`DAYA` >= 41500
THEN SET NEW.ESTIMASI = 40;
ELSE SET NEW.ESTIMASI = 100;
END IF
当我执行触发器时,它已经被创建了。但是,当我将数据插入 table pelayanan 时,它变成了
#1109 - Unknown table 'pelayanan' in field list.
我该如何解决这个问题?
我必须删除 dbhpl.pelayanan.DAYA
成为 pelayanan.DAYA
和 DAYA
。但是,它不起作用。
在列名前使用 NEW。这是正确的代码-
mysql>
CREATE DEFINER=`root`@`localhost` TRIGGER `before_insert_pelayanan`
BEFORE INSERT ON `pelayanan` FOR EACH ROW
IF NEW.`ESTIMASI` IS NULL OR NEW.`ESTIMASI` = 0 AND
`NEW`.`DAYA` <= 5500
THEN SET NEW.ESTIMASI = 4;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`NEW`.`DAYA` <= 33000 AND
`NEW`.`DAYA` >= 6600
THEN SET NEW.ESTIMASI = 15;
ELSEIF NEW.ESTIMASI IS NULL OR NEW.ESTIMASI = 0 AND
`NEW`.`DAYA` <= 197000 AND
`NEW`.`DAYA` >= 41500
THEN SET NEW.ESTIMASI = 40;
ELSE SET NEW.ESTIMASI = 100;
END IF
Query OK, 0 rows affected (0.11 sec)
mysql> insert into pelayanan values ();
Query OK, 1 row affected (0.08 sec)
mysql> select * from pelayanan ;
+----------+------+
| ESTIMASI | daya |
+----------+------+
| 4 | NULL |
+----------+------+
1 row in set (0.00 sec)