我有一个用于用户记录的小型数据库,当我插入一个新用户时,我希望自动生成id,所以我使用以下sql脚本创建了我的数据库:
CREATE TABLE `members` (
`idmembers` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(145) DEFAULT NULL,
`password` varchar(545) DEFAULT NULL,
`clearance` int(5) DEFAULT NULL,
`profilepic` text,
`createdby` varchar(45) DEFAULT NULL,
`friends` varchar(545) DEFAULT NULL,
PRIMARY KEY (`idmembers`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
以及以下触发器:
CREATE DEFINER=`root`@`localhost` TRIGGER `fuhrergroup`.`members_BEFORE_INSERT` BEFORE INSERT ON `members` FOR EACH ROW
BEGIN
INSERT INTO members VALUES (NULL);
SET NEW.idmembers = CONCAT('F', LPAD(LAST_INSERT_ID(), 3, '0'));
END
但是当我想插入时:
INSERT INTO fuhrergroup.members (idmembers, username, password, clearance, profilepic, createdby, friends) VALUES (NULL, 'admin', 'secret', '5', 'aa', 'System', '')
我总是得到: 错误代码:1136。列数与第1行的值计数不匹配
谷歌搜索并没有真正帮助
答案 0 :(得分:1)
您的触发器查询不正确:
INSERT INTO members VALUES (NULL);
您应该告诉MySQL哪个列必须成为NULL
:
INSERT INTO members (columnname) VALUES (NULL);