我是新手,不知道如何编码,但我想修改系统。
TARGET:当我删除' id'从学生表中它也将删除用户ID'来自选民表。
屏幕截图:
学生表
选民表
这是我正在使用的代码。 (此代码仅删除学生表上的行) 我尝试过使用其他查询但没有任何反应。有人可以为我修复代码吗?我是新手。
<?php ob_start();
session_start();
if (!isset($_SESSION['id'])){
header("location:../login.php");
}
?>
<?php
include('../connect.php');
$id=$_GET['id'];
$del = mysqli_query($connection,"DELETE FROM students WHERE id='$id'");
?>
答案 0 :(得分:1)
当您使用任何RDBMS时,这是所需的功能。即,当有两个表之间有foreign key relationship
时,第一个表的foreign key
是第二个表的Primary key
。然后删除第一个表记录将触发第二个表中与其关联的记录的deletion
。
这称为级联删除,使用以下定义可以更好地解释。
具有级联删除的外键意味着如果删除父表中的记录,则会自动删除子表中的相应记录。这在SQL Server中称为级联删除。
答案 1 :(得分:0)
<强> MySQL的:强>
您可以使用JOIN
这样删除:
DELETE users
FROM users
INNER JOIN voters
ON users.id = voters.userid
WHERE users.name = 'Jordan Santos';
有关数据的示例,请参阅this SQL fiddle。 (您可以使用DELETE
注释掉#
语句,以查看查询结果而不删除任何内容。)
<强> Postgres的:强>
您可以使用两个Common Table Expressions(即WITH
子句)在每个表中执行删除操作:
WITH user_deletion AS (
-- this deletes the user based on username
DELETE
FROM users u
WHERE username='Dad'
RETURNING id, username
),
vote_deletion AS (
-- this gets the deleted user_id from above and deletes the corresponding vote(s)
DELETE
FROM votes
WHERE user_id = (SELECT id FROM user_deletion)
RETURNING vote_id, user_id, vote
)
-- this runs the DELETE statements in the clauses above
SELECT udel.*, vdel.*
FROM user_deletion udel
INNER JOIN vote_deletion vdel
ON udel.id = vdel.user_id;
有关带数据的Postgres示例,请参阅this SQL Fiddle,并在删除之前和之后显示结果。