간단한 트리거 문제를 만드는 :는 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 구문에 오류가 있습니다; 올바른 구문이 ''almacen_tb_almacenes ''근처에서 사용하도록 MySQL 서버 버전에 해당하는 설명서를 확인하십시오. 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'? –