mysql - 如何使用一个sql命令同时从一个或多个表中删除

标签 mysql database sql-update

我有三个表(非政府组织、工作人员和财务)。如果删除某个非政府组织的数据,我想删除该非政府组织的所有员工和财务数据。现在,我分别在这些表中添加数据:首先,添加所有非政府组织;其次,添加该非政府组织的所有工作人员;第三,添加非政府组织的所有资金。

现在,假设我只添加非政府组织和工作人员,后来改变主意从两个表中删除信息,而不进一步添加财务。

$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/

相关文章:

PHP 在 apache 服务器上执行

mysql - 如何使用 orderBy 对 Eloquent 查询进行分页。加入时

Android - 刷新/重新启动以前的 Activity

mysql - 没有子查询的更新会引发错误 : Subquery returns more than 1 row

mysql - 在存储过程中更新和删除

MYSQL SELECT 在具有 NULL 值的 FK 字段上不返回任何内容

php - php 和 MySQLi 的递归菜单

sql - 为 10k+ 用户保存用户数据的最佳方法

java - 如何使用数据库中的数据填充 ListView

mysql - 如何更改mysql中特定字段的所有记录