外键应自动创建一个新条目

时间:2018-03-29 15:41:28

标签: mysql database foreign-keys

我有2个表usersiomusers的主键是iomid,当然在iom中,外键是引用users.iomid的iomid

如果我在用户中创建一个新用户,我希望它自动插入到iom中,而不需要再发表第二个声明。

我该怎么做?

IOM:

CREATE TABLE IF NOT EXISTS `iom` (
`id` int(11) NOT NULL,
  `iomid` varchar(50) NOT NULL,
  `subscribed` int(11) DEFAULT NULL,
  `workoutcounter` int(11) DEFAULT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

ALTER TABLE `iom`
 ADD UNIQUE KEY `id` (`id`), ADD KEY `iom_ibfk_1` (`iomid`);

ALTER TABLE `iom`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

ALTER TABLE `iom`
ADD CONSTRAINT `iom_ibfk_1` FOREIGN KEY (`iomid`) REFERENCES `users` (`iomid`) ON DELETE CASCADE ON UPDATE CASCADE;

用户:

CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL,
  `iomid` varchar(50) NOT NULL,
  `name` varchar(50) NOT NULL
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

ALTER TABLE `users`
 ADD PRIMARY KEY (`iomid`), ADD UNIQUE KEY `id` (`id`);

ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;

谢谢和问候!

1 个答案:

答案 0 :(得分:0)

现在我再次查看你的问题,你的外键约定的问题是相当无关紧要的。即使有更典型的关系,外键约束也不能创建行;最多,他们可以"级联"更新和删除引用表的引用值。

你需要的是"在插入用户之后"的触发即可。 (文件here。)