我正在使用PHP和MySQL创建一个简单的基于文本的RPG,并且在尝试利用AFTER INSERT触发器时遇到了一个奇怪的错误。
在将新生物插入到生物表中之后,我想使用触发器将一条新记录也插入到商店表中,其中包含与我添加的生物有关的战利品信息。具体来说,当我在生物中插入一条记录时,我希望它取“ gloot”并将其放入存储表中。
生物表代码:
CREATE TABLE IF NOT EXISTS `creatures` (
`id` int(3) NOT NULL AUTO_INCREMENT,
`name` varchar(21) NOT NULL,
`hpoints` mediumint(3) NOT NULL,
`maxhp` mediumint(3) NOT NULL,
`attack` mediumint(3) NOT NULL,
`defense` mediumint(3) NOT NULL,
`experience` int(3) NOT NULL,
`level` mediumint(3) NOT NULL,
`gloot` varchar(100) NOT NULL,
`gold` mediumint(3) NOT NULL,
`isloot` mediumint(3) NOT NULL,
PRIMARY KEY (`id`)
)
商店表的代码:
CREATE TABLE IF NOT EXISTS `store` (
`name` varchar(50) NOT NULL,
`stats` varchar(30) DEFAULT NULL,
`statadd` smallint(3) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`amount` smallint(5) DEFAULT NULL,
`randid` int(9) NOT NULL,
`type` varchar(30) DEFAULT NULL,
`location` varchar(100) DEFAULT NULL
)
最后,这是触发代码
DELIMITER $$
DROP TRIGGER IF EXISTS itemToStore
CREATE TRIGGER itemToStore
AFTER INSERT ON `creatures`
FOR EACH ROW BEGIN
IF (New.gloot != “”) THEN
INSERT INTO `store` (`name`, `statadd`, `price`, `amount`, `randid`)
VALUES('New.gloot', '0', '0',’0’, ROUND( 100000000 * RAND( ) ));
END IF;
END;
$$
所以,我要说的是,如果gloot不为空,则将其插入到store表中。
触发器可以很好地添加,但是在我插入生物表之后引发的错误是一个奇怪的错误。我得到:
MySQL说:#1054-未知列'“â€
为了完整起见,这是我正在使用的insert语句:
INSERT INTO `legends`.`creatures` (
`id` ,
`name` ,
`hpoints` ,
`maxhp` ,
`attack` ,
`defense` ,
`experience` ,
`level` ,
`gloot` ,
`gold` ,
`isloot`
)
VALUES (
NULL , 'dragon', '200', '200', '10', '10', '1', '1', 'Dragon Bones', '250', '50'
)
哎呀,好多。谢谢您的宝贵时间!
更换引号”
和’
用'
。
DELIMITER $$
DROP TRIGGER IF EXISTS itemToStore $$
CREATE TRIGGER itemToStore AFTER INSERT ON `creatures`
FOR EACH ROW BEGIN
IF (NEW.gloot <> '')
THEN
INSERT INTO `store` (`name`, `statadd`, `price`, `amount`, `randid`)
VALUES (NEW.gloot, '0', '0','0', ROUND( 100000000 * RAND( ) ));
END IF;
END;
$$
您还忘记了$$
在drop
命令后添加。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句