Sql ';从'中删除;查询问题

Sql ';从'中删除;查询问题,sql,foreign-keys,Sql,Foreign Keys,我创建了以下两个表 create table mail(mid integer primary key, name varchar(20) ) create table phone( pid integer foreign key references mail(email), phone integer) “删除pid=12的记录”。这意味着,我必须从oth表中删除pid=12的记录。所以,我运行了以下查询 delete from mail, phone on mail.mid=phone.

我创建了以下两个表

create table mail(mid integer primary key, name varchar(20) )
create table phone( pid integer foreign key references mail(email), phone integer)
“删除pid=12的记录”。这意味着,我必须从oth表中删除pid=12的记录。所以,我运行了以下查询

delete from mail, phone on mail.mid=phone.pid where pid=12
但我得到了类似“检查来自附近的语法”的错误,然后如何获得正确的输出

谢谢和问候, Pooja.

您需要两个查询

从pid=12的邮件中删除; 从电话中删除pid=12

您需要两个查询

从pid=12的邮件中删除; 从电话中删除pid=12


我想一定是
。。。其中phone.pid=12

我想它一定是
。。。其中phone.pid=12

只需让数据库通过对外键使用级联删除来处理它。

只需让数据库通过对外键使用级联删除来处理它。

您必须分别执行这两个操作。将它们包装在事务中,以确保在出现故障时保持完整性

declare @id int;
set @id = 12;

begin transaction 

    delete from mail where pid = @id;
    if @@error = 0 
        delete from phone where pid = @id;
    else
        rollback transaction;
end

您必须分别执行这两个操作。将它们包装在事务中,以确保在出现故障时保持完整性

declare @id int;
set @id = 12;

begin transaction 

    delete from mail where pid = @id;
    if @@error = 0 
        delete from phone where pid = @id;
    else
        rollback transaction;
end

在该位置上使用关键字ON无效,如果要在该条件下进行内部联接,请将其移动到where子句

delete from mail, phone where pid=12 AND mail.mid=phone.pid

在该位置上使用关键字ON无效,如果要在该条件下进行内部联接,请将其移动到where子句

delete from mail, phone where pid=12 AND mail.mid=phone.pid

如果使用mysql,则语法如下:

delete mail, phone 
from mail inner join phone 
where mail.mid=phone.pid and pid=12

如果使用mysql,则语法如下:

delete mail, phone 
from mail inner join phone 
where mail.mid=phone.pid and pid=12

如果您使用的是oracle,则在创建表选项时,可以在DELETE CASCADE上使用

create table phone( pid integer , phone integer, foreign key(pid) REFERENCES mail ON DELETE CASCADE)

如果您使用的是oracle,则在创建表选项时,可以在DELETE CASCADE上使用

create table phone( pid integer , phone integer, foreign key(pid) REFERENCES mail ON DELETE CASCADE)

你能告诉我,如何使用“级联删除”吗?bcuz,这是我第一次听到。这是一个很好的建议,但是db用户帐户需要拥有
Alter Table
@Pooja的权限。级联删除是一种主-详细信息(外键)关系,在主-详细信息被删除时,会自动删除这些详细信息。您使用的是什么RBDM?Microsoft SQL Server?在这种情况下,看看你会告诉,如何使用“级联删除”?bcuz,这是我第一次听到。这是一个很好的建议,但是db用户帐户需要拥有
Alter Table
@Pooja的权限。级联删除是一种主-详细信息(外键)关系,在主-详细信息被删除时,会自动删除这些详细信息。您使用的是什么RBDM?Microsoft SQL Server?在这种情况下,请看对不起,它不起作用。它显示的错误类似于“检查','附近的语法”。对不起,它不起作用。它显示的错误类似于“检查','附近的语法”。对不起,它不起作用。它显示的错误类似于“检查','附近的语法”。对不起,它不起作用。它显示的错误类似于“检查','附近的语法”。对不起,它不起作用。它显示的错误类似于“检查','附近的语法”。对不起,它不起作用。它显示的错误类似于“检查','附近的语法”