mysql触发器在php中不工作

mu0hgdu0  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(327)

热释光;dr:query是从mysql cli工作的,而不是从php工作的,就好像触发器不是由php触发的一样。
我的mysql结构如下: entity “parent”表 id 作为主键 contact 是一张有 entity_id 作为pk和fk on
entity person “孙子”的table entity_id 作为pk和fk on contact 我创建了一些触发器,以便在 contact ,它首先在 entity 使用新的 id 作为 entity_id . 同上 person 以及 contact . 触发器都是在同一个模型上制作的,这里有一个:

DELIMITER #
DROP TRIGGER IF EXISTS contact_insert_trig;
CREATE TRIGGER contact_insert_trig BEFORE INSERT ON `contact`
FOR EACH ROW BEGIN
    INSERT INTO entity (cat_id) values (1);
    SET NEW.entity_id = (SELECT id FROM entity ORDER BY id DESC LIMIT 1);
    SET NEW.entity_cat_id = 1;
END; #

例如,当我在 person ,第一个触发器在 contact 它通过第二个触发器在 entity ,全部匹配 id s。
这在mysql中有效,但在php中无效。相同的查询:

INSERT INTO person (first_name, last_name) VALUES ("Bob", "McIntosh")

在mysql cli中工作(所有行都被创建并匹配),但在用调用时失败 mysqli->query() 在php7中出现错误:

Field 'entity_id' doesn't have a default value

如何使它在php中也工作?或者我必须手动创建所有父表吗?

6l7fqoea

6l7fqoea1#

这就成功了,现在查询也可以在php中工作:

SET SESSION sql_mode = 'NO_ENGINE_SUBSTITUTION';

(或者不要打开 STRICT_TRANS_TABLES ).

相关问题