我需要創建一個簡單的觸發器:MySQL中創建簡單的觸發問題(在MySQL小白)
DELIMITER //
CREATE TRIGGER `create_stock_articulo` AFTER INSERT ON `almacen_tb_articulos`
FOR EACH ROW
BEGIN
DECLARE cur CURSOR FOR SELECT id FROM 'almacen_tb_almacenes';
DECLARE id INT;
OPEN cur;
REPEAT
FETCH cur INTO id;
INSERT INTO 'almacen_tb_stock' VALUES (id,NEW.id);
UNTIL done END REPEAT;
CLOSE cur;
END;//
這觸發應該在一行時,插入「almacen_tb_articulos」表「almacen_tb_stock」添加行。每個添加的行都必須包含「almacen_tb_almacenes.id」和新的「almacen_tb_articulos.id」。
當我嘗試創建這個觸發器我得到這個錯誤:
#1064 - 你有一個錯誤的SQL語法;檢查與您的MySQL服務器版本相對應的手冊,以找到在'almacen_tb_almacenes'附近使用的正確語法; DECLARE id INT; OPEN cur; REPEAT FETCH CUR我在4號線
」我不能看到錯誤所在。
表的定義是這些:
almacen_tb_articulos:
CREATE TABLE IF NOT EXISTS `almacen_tb_articulos` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`codigo` varchar(15) NOT NULL,
`descripcion` varchar(150) NOT NULL,
... more irrelevant fields,
PRIMARY KEY (`id`),
KEY `id_familia` (`id_familia`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=43
almacen_tb_almacenes:
CREATE TABLE IF NOT EXISTS `almacen_tb_almacenes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`almacen` varchar(100) NOT NULL,
`email` varchar(100) NOT NULL,
`bloqueado` tinyint(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
almacen_tb_stock:
CREATE TABLE IF NOT EXISTS `almacen_tb_stock` (
`id_almacen` int(11) NOT NULL,
`id_articulo` int(11) NOT NULL,
`cantidad` int(11) NOT NULL,
PRIMARY KEY (`id_almacen`,`id_articulo`),
KEY `id_almacen` (`id_almacen`),
KEY `id_articulo` (`id_articulo`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
'SELECT ID FROM「almacen_tb_almacenes''或'SELECT ID FROM almacen_tb_almacenes'? –