删除一对一关系表

问题描述 投票:0回答:2

我创建了两个1比1的表。 因此一张表具有来自另一张表的外键。

如何删除桌子?我在创建表时没有使用删除级联。

所以我要么必须以某种方式改变它,要么我不知道..

我已经做到了。

CREATE TABLE hotel(
id_hotel
...

)

CREATE TABLE Manager(
ID_Manager
...
id_hotel FOREIGN KEY ...
)

然后我添加了

ALTER TABLE Hotel ADD id_manager INT NOT NULL;
ALTER TABLE Hotel ADD FOREIGN KEY (id_manager) REFERENCES Manager(id_manager);
sql sql-server
2个回答
0
投票

您首先必须删除列中包含外键的表,例如:如果您有 2 个实体,一个名为 Driving_license,另一个名为 person,并且您将 person 的 id 存储在表 Driving_license 中,则必须首先删除该表驾驶执照

或者如果您使用的是 MySQL:您可以写:

SET_FOREIGN_KEY_CHECKS=0;

//Drop however you want

SET_FOREIGN_KEY_CHECKS=1

对于 MSSQL,您可以使用:

ALTER TABLE <yourtablename> NOCHECK CONSTRAINT ALL

然后放下你的桌子


0
投票

在 MySQL 中,您首先需要删除其中一个外键:

SHOW CREATE TABLE ArefersB;
"CREATE TABLE 'ArefersB' (
  'id' bigint(20) NOT NULL,
  'BrefersA_id' bigint(20) DEFAULT NULL,
  PRIMARY KEY ('id'),
  KEY 'FK9598D7ED8482B568' ('BrefersA_id'),
  CONSTRAINT 'FK9598D7ED8482B568' FOREIGN KEY ('BrefersA_id') 
  REFERENCES 'BrefersA' ('id'),
) ENGINE=InnoDB DEFAULT CHARSET=latin1"

SHOW CREATE TABLE BrefersA;

"CREATE TABLE 'BrefersA' (
  'id' bigint(20) NOT NULL,
  'ArefersB_id' bigint(20) DEFAULT NULL,
  PRIMARY KEY ('id'),
  KEY 'FK9598D7EDEE571287' ('ArefersB_id'),
  CONSTRAINT 'FK9598D7EDEE571287' FOREIGN KEY ('ArefersB_id') 
  REFERENCES 'ArefersB' ('id'),
) ENGINE=InnoDB DEFAULT CHARSET=latin1"

ALTER TABLE BrefersA drop foreign key 'FK9598D7EDEE571287';
DROP TABLE ArefersB;
DROP TABLE BrefersA;
© www.soinside.com 2019 - 2024. All rights reserved.