gpt4 book ai didi

在另一个表上插入值后MySQL触发

转载 作者:行者123 更新时间:2023-11-29 21:27:21 24 4
gpt4 key购买 nike

我有一个表格,其中包含我的手机联系人列表,这是联系人表格的结构。

enter image description here

另一张是smartteleco table 。

enter image description here

smartteleco表的ContactId联系人ContactId的外键。

我正在创建一个触发器,如果​​我插入一个值到联系人表中并且ContactNumber1值以0918,0919,0920开头, 0921它将存储在smartteleco表的CellNumber字段中。

这些是我已经尝试过的触发器,但存在语法错误,并且错误始终位于 IF 语句 内。

CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(ContactNumber1,1,4) IN (0918,0919,0920,0921) = 1)
SET CellNumber = substring(ContactNumber1,1,11);
END IF;
END



CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(ContactNumber1,1,4) IN (0918,0919,0920,0921) = 1)
INSERT INTO smartteleco (CellNumber) VALUES (ContactNumber1);
END IF;
END



CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(ContactNumber1,1,4) IN (0918,0919,0920,0921) = 1)
INSERT INTO smartteleco (NEW.CellNumber) VALUES (NEW.ContactNumber1);
END IF;
END


CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(ContactNumber1,1,4) IN (0918,0919,0920,0921) = 1)
SET CellNumber = ContactNumber1;
END IF;
END



CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(ContactNumber1,1,4) IN (0918,0919,0920,0921) = 1)
SET NEW.CellNumber = NEW.ContactNumber1;
END IF;
END

最佳答案

行触发器无法直接访问其所附加的表的列。它可以使用伪记录NEW访问新插入的记录中的值。要使触发器正常工作,只需将对 ContactNumber1 的引用替换为对 NEW.ContactNumber1 的引用即可。

您还需要为 IF 结构使用正确的语法,即

IF <contition> THEN  --< You need this keyword
<statement>
END IF;

您可能还需要将 ContactNumber1 转换为 CHAR 才能对其使用 substring()

所以正确的触发语法应该是

CREATE TRIGGER addSmart
AFTER INSERT ON contacts
FOR EACH ROW
BEGIN
IF(substring(CAST(NEW.ContactNumber1 AS CHAR(11)), 1, 4) IN ('0918', '0919', '0920' ,'0921'))
THEN
INSERT INTO smartteleco (ContactId, CellNumber)
VALUES (NEW.ContactId, NEW.ContactNumber1);
END IF;
END

编辑:语法已更正。我还发现您需要将 ContactNumber1 列从 INT(11) 更改为 CHAR(11),这实际上是首选数据因为您永远不会对电话号码执行算术运算。

关于在另一个表上插入值后MySQL触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35447500/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com