无法在phpmyadmin的mysql中创建触发器
在phpmyadmin中将一行插入数据库后,我试图通过组合字段来创建一个ID。我在以下触发器语句的第3行得到一个错误:无法在phpmyadmin的mysql中创建触发器,mysql,triggers,phpmyadmin,Mysql,Triggers,Phpmyadmin,在phpmyadmin中将一行插入数据库后,我试图通过组合字段来创建一个ID。我在以下触发器语句的第3行得到一个错误: DROP TRIGGER IF EXISTS `scanID2`; CREATE DEFINER=`root`@`localhost` TRIGGER `scanID2` AFTER INSERT ON db_name.`scan_data` FOR EACH ROW BEGIN UPDATE db_name.scan_data SET @data1 = conca
DROP TRIGGER IF EXISTS `scanID2`;
CREATE DEFINER=`root`@`localhost`
TRIGGER `scanID2`
AFTER INSERT ON db_name.`scan_data`
FOR EACH ROW
BEGIN
UPDATE db_name.scan_data
SET @data1 = concat(RIGHT(scanContent,2), RIGHT(operatorID,2), RIGHT(deviceID,2), RIGHT (scanDate, '-', ''), REPLACE (scanTime, ':', ''));
INSERT INTO db_name.scan_data(scanID) VALUES (@data1);
END
//
错误是:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CREATE DEFINER=`root`@`localhost`
TRIGGER `scanID2`
AFTER INSERT ON db_name' at line 2
好的,所以我想到了如何执行查询。触发器已经被创建,但我不认为它做了它应该做的。记录不会更新。以下是新代码:
BEGIN
SET @data1 = concat(RIGHT(scanContent,2), RIGHT(operatorID,2), RIGHT(deviceID,2), REPLACE (scanDate, '-', ''), REPLACE (scanTime, ':', ''));
INSERT INTO vacseen1_connect.scan_data(scanID) VALUES (@data1);
END
有几件事需要考虑:
之前的事件,而不是之后的。这样,您可以在插入行的同时设置scanID
的值
NEW
关键字访问插入行的字段BEGIN。。。结束
块REPLACE
创建触发器scanID2
在扫描数据上插入之前
每行
设置NEW.scanID=CONCAT(
右(NEW.scanContent,2),
右(新的操作员ID,2),
右(新设备ID,2),
替换(新的。斯堪的纳特,“-”,“),
替换(NEW.scanTime“:”,“”)
);
这是一个演示错误消息是什么?还提供完整的触发器语句您仍然需要在触发器内终止语句,即使用分号。我不知道你想用update语句做什么。它是什么类型的触发器?我希望“scanID”是来自scanContent、operatorID、deviceID、ScanState和scanTime的数字组合。我正在从android设备获取这些详细信息,并在scanID列中插入一个包含这些详细信息的空白“”。插入后,我希望使用新创建行的触发器更新表。请求您的输入MySQL\u Rockstar和pale\u。我已经为此挣扎了两天了。