Mysql创建一对一的关系

时间:2014-06-17 19:22:38

标签: mysql

我有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

2 个答案:

答案 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。