我有2张桌子
CREATE TABLE `persons` (
`id` int(6) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`name`
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `person_rank` (
`id` int(6) NOT NULL,
`wins` int DEFAULT 0,
`losts` int DEFAULT 0,
`rank` int DEFAULT 1000
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果我愿意,我该如何创建这些表:当一个人ID添加到persons
时,同一个人将自动添加到person_rank
rank=1000
wins=0
并且losts=0
?
答案 0 :(得分:1)
在人员
上创建AFTER INSERT触发器DELIMITER ;;
CREATE TRIGGER `persons_ai` AFTER INSERT ON `persons` FOR EACH ROW
INSERT INTO `person_rank` (`id`, `wins`, `losts`, `rank`) VALUES (new.id, 0, 0, 1000);;
DELIMITER ;
答案 1 :(得分:0)
我会这样做,因为MarcB说并且只运行两次插入。
与MarcB所说的一样,创建一个从persons_rank.id到persons.id的外键,在删除和更新时级联。这将使它们保持同步。如果您更改人员的ID,它将更新persons_rank。如果删除人员中的行,则会删除persons_rank中的行。
最后,您还需要id作为persons_rank中的主键,因为它是1比1。