我有三个表(非政府组织、工作人员和财务)。如果删除某个非政府组织的数据,我想删除该非政府组织的所有员工和财务数据。现在,我分别在这些表中添加数据:首先,添加所有非政府组织;其次,添加该非政府组织的所有工作人员;第三,添加非政府组织的所有资金。
现在,假设我只添加非政府组织和工作人员,后来改变主意从两个表中删除信息,而不进一步添加财务。
$qry =mysqli_query($mysqli, "
update ngo, finance, staff
set ngo.deletestatus=('delete'),
finance.deletestatus=('delete'),
staff.deletestatus=('delete')
where ngo.ngo_id=finance.ngo_id
and ngo.ngo_id=staff.ngo_id
and ngo.ngo_id='".$_GET['delet']."'");
此查询未运行,因为财务表为空。即使一张表是空的,我仍然希望使用相同的脚本使删除操作生效。请帮忙!!
最佳答案
您将需要修复数据库设计以允许级联删除/更新。您可以这样做:
CREATE TABLE ngos (
id int unsigned not null primary key,
name VARCHAR(255) default null
);
CREATE TABLE ngostaff (
ngo_id int unsigned not null,
staff_id int unsigned not null,
name VARCHAR(255) default null,
FOREIGN KEY (ngo_id) REFERENCES ngos (id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
CREATE TABLE ngofinance (
ngo_id int unsigned not null,
finance_id int unsigned not null,
name VARCHAR(255) default null,
FOREIGN KEY (ngo_id) REFERENCES ngos (id)
ON DELETE CASCADE
ON UPDATE CASCADE
);
从 ngo 表中删除一行将自动删除引用它的任何行。
关于mysql - 如何使用一个sql命令同时从一个或多个表中删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46117803/