0

我有两个表 - 一个用户表和一个用户日志表。

CREATE TABLE `client_user` (
  `id_client_user` int(11) NOT NULL auto_increment,
  `Nom` varchar(45) NOT NULL,
  `Prenom` varchar(45) NOT NULL,
  `email` varchar(255) NOT NULL,
  `userid` varchar(45) NOT NULL,
  `password` varchar(45) NOT NULL,
  `active` tinyint(1) NOT NULL default '0',
  `lastaccess` timestamp NULL default NULL,
  `user_must_change_pwd` tinyint(1) NOT NULL default '0',
  PRIMARY KEY  (`id_client_user`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `user_log` (
  `id_user_log` int(11) NOT NULL auto_increment,
  `access` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
  `zone_updated` varchar(255) NOT NULL,
  `id_client_user` int(11) NOT NULL,
  PRIMARY KEY  (`id_user_log`),
  KEY `fk_user_log_client_user1` (`id_client_user`),
  CONSTRAINT `fk_user_log_client_user1`
  FOREIGN KEY (`id_client_user`)
      REFERENCES `client_user` (`id_client_user`)
      ON DELETE NO ACTION
      ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

我在 client_user 表中创建了一个用户,然后他的活动记录在 user_log 表中。我现在需要删除 user_log 表中的行。由于外键约束,这被拒绝了——我已经明白了。

查看文档后,我还没有看到如何更改外键以允许我删除 user_log 记录。我需要的是一个外键 (1:n),client_user (1) 到 user_log (n),其中 user_log 记录可以被删除而不影响关联的 client_user 记录。

我确信这对于 innodb 是可能的,但我看不出如何。帮助 ?

4

1 回答 1

0

规范

InnoDB 支持使用 ALTER TABLE 来删除外键:

ALTER TABLE tbl_name DROP FOREIGN KEY fk_symbol;
于 2012-12-21T10:05:53.420 回答