0

user テーブルと userlog テーブルの 2 つのテーブルがあります。

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) で、関連する client_user レコードに影響を与えずに user_log レコードを削除できます。

これはinnodbで可能だと確信していますが、方法がわかりません。ヘルプ ?

4

1 に答える 1

0

仕様より

InnoDBは、ALTERTABLEを使用して外部キーを削除することをサポートしています。

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