我有两张桌子:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(8) NOT NULL AUTO_INCREMENT,
`username` varchar(45) NOT NULL,
`password` varchar(200) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
CREATE TABLE IF NOT EXISTS `users_info` (
`id` int(8) NOT NULL,
`name` varchar(35) NOT NULL,
`address` varchar(35) NOT NULL,
PRIMARY KEY (`id`),
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我希望在用户users
中插入用户时,自动在表users_info
中插入一个新行,该行在id
列中包含相同的ID,作为{ {1}}表。
当我执行插入操作时,我会这样做:users
我相信我应该看一下MySQL触发器。我确实看了一下,但我不知道如何从插入的每个最后一行的users表中检索密钥id,假设其他行可以在其他线程中并行插入。
答案 0 :(得分:1)
如果您创建AFTER INSERT
触发器,则可以使用NEW对象:
CREATE
TRIGGER `aftInsert_users` AFTER INSERT ON `users`
FOR EACH ROW BEGIN
INSERT INTO users_info (itemID) VALUES (NEW.id);
END;
答案 1 :(得分:0)
如果为定义为not null
的列定义默认值,则插入后的触发器应该有效:
CREATE TRIGGER insert_users_info
AFTER INSERT ON `users`
FOR EACH ROW INSERT INTO `users_info` (id) VALUES (NEW.id);
有关详细信息,请参阅MySQL documentation触发器。