我的数据库中有两个表,其架构如下:
locations (
location_id INT PRIMARY KEY,
location VARCHAR
)
和
venues (
venue_id INT PRIMARY KEY,
venue VARCHAR,
venue_location INT FOREIGN KEY locations(location_id)
ON DELETE CASCADE
)
当我需要删除位置而不是场地时,会出现一个大问题。如何仅删除位置但不删除具有相同location_id
. 我应该怎么做才能达到这个要求。
示例数据:
/*locations table and data*/
locations(1, "Kathmandu");
locations(2, "Ilam");
locations(3, "Fikkal");
/*venues table and data*/
venues(1, "Green View Hotel and Lodge", 2);
venues(2, "Hyatt Hotel and Lodge", 1);
venues(3, "Abc Hotel", 3);
如何在locations
不影响venues
“Abc Hotel”的情况下删除“Fikkal”位置。我知道 ON DELETE CASCADE 正在从场所中删除该行,而我删除了相同 ID 的位置。但是如果我删除了 ON DELETE CASCADE mysql 说 FK 约束失败并且它也很明显。你会如何解决这样的问题。
我正在考虑的解决方案是locations
在下表中创建一个默认位置,如下所示:
位置(0,“默认位置”);
并执行类似ON DELETE SET DEFAULT
但真的不知道如何。
但我认为有一些方法可以解决这个问题professional
。standard
请有任何想法。
谢谢