我创建了两个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);
您首先必须删除列中包含外键的表,例如:如果您有 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
然后放下你的桌子
在 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;