MySQL同时删除主表中的内容,同时删除附加表中的相同ID

发布于 科技 2024-06-30
16个回答
  1. 匿名用户2024-01-30

    - 创建测试主服务器。 id 是主键。

    create table test_main (

    id int,value varchar(10),primary key(id)

    创建测试子表。

    create table test_sub (

    id int,main_id int,value varchar(10),primary key(id)

    插入测试主数据。

    insert into test_main(id, value) values (1, 'one');

    insert into test_main(id, value) values (2, 'two');

    插入测试子表的数据。

    insert into test_sub(id, main_id, value) values (1, 1, 'oneone');

    insert into test_sub(id, main_id, value) values (2, 2, 'twotwo');

    1> - 创建外键(使用 on delete cascade 选项删除主表并同时删除子表)。

    2> alter table test_sub

    3> add constraint main_id_cons

    4> foreign key (main_id) references test_main on delete cascade;

    6> - 测试删除主表数据。 将成功执行。

    7> delete

    8> test_main

    9> where

    10> id = 1;

    12> - 测试检索子表,应该只有一条 main id = 2 的数据。

    13> select

    15> from

    16> test_sub;

    18> go

    1 行受影响)。

    id main_id value

    2 2 twotwo

    1 行受影响)。

    以上是在 SQL Server 上执行的结果。

    MySQL也应该支持它。

  2. 匿名用户2024-01-29

    我不能设置主键和外键关联吗?

  3. 匿名用户2024-01-28

    有两种方法:

    连续写入两条SQL语句,同时删除两条相关记录。

    编写一个触发器,用于删除与第一个表相关的记录,并调用该触发器删除第二个表的相关记录。

  4. 匿名用户2024-01-27

    编写程序,删除多个带有事务的表,防止错误的删除操作。 表存储引擎是 innodb

  5. 匿名用户2024-01-26

    例如,三个表 a、b 和 c 的关联:

    如果 b 的辅助数据。

    或者 C 的辅助数据不一定存在,并附有以下语句:

    delete a,b,c from a left join b on left join c on where ( or (;

    删除所有三个表中存在的相关数据:genus。

    delete a,b,c from a,b,c where and 。

  6. 匿名用户2024-01-25

    不可能,SQL语句。

    删除表名字段是有限的,最好将它们一一分散。

  7. 匿名用户2024-01-24

    首先,您需要重置 SQL 语句分隔符,因为默认值为分号 (; 所以在你的触发语句中; 会看作是SQL语句的分区,会错的,根据上面的语句你应该这样写:

    delimiter $

    create trigger sche_building_del after delete on classroomtbl for each row

    begindelete from schedulebasetbl where schedulebasetbl.`classroom_id`=;

    delete from schedulechangetbl where schedulechangetbl.`classroom_id`=;

    end$ 上面的分隔符 $ 是声明 $ 为 SQL 分隔符的分隔符,可以试一试。

  8. 匿名用户2024-01-23

    第一种方法:设置约束表 fk 外键(fk id) 创建外键时引用表 p(fk id)

    on delete cascade

    第二种方法:构建触发器。

  9. 匿名用户2024-01-22

    $luser变量。

    cn=tm 是什么意思,dc=spcn 是什么意思,dc=tm 是什么意思?

  10. 匿名用户2024-01-21

    如果删除数据库中两个表中的相同数据,则必须基于相同的 ID 删除数据。

    解决方法: 1.在设计数据库表时,通过设置级联删除操作来完成。

    2. 您可以编写触发器来完成操作。

    3. 先删除主表的数据行,然后根据关联的外键值删除附加表中的对应行。

    具体方法:作为外键,暂时调用主表,从主表中删除,其中id=@id

    首先,从子表中 mainid = @id 的详细信息中删除

    为了保证数据完整性,最好将上述操作包含在单个事务中,如果两个语句的影响都大于零,则提交,否则回滚。

  11. 匿名用户2024-01-20

    假设表 A 和 B 的主键名称为 FID

    delete from a where fid in (select fid from b)

  12. 匿名用户2024-01-19

    使用 SQL link 语句从表 B 中取出第一条记录,然后到表 A 找到相同的记录,找到记录时删除记录,然后从表 B 中取出第二条记录,然后到表 A 找到相同的记录,并删除它,直到找到表 B 中的记录。

  13. 匿名用户2024-01-18

    表A中的数据与表B中的数据相同,所有字段的值都相同,还是只有少数字段具有相同的值。

  14. 匿名用户2024-01-17

    描述不是很清楚,什么是相同的数据?

    编写一个 sql 供您参考。

    delete

    from a

    内部连接 b 和 -- 这是判断相同的条件。

  15. 匿名用户2024-01-16

    如果在表的定义语句中使用 on delete cascade 来修改子表(即表 B),那么在删除表 A 的数据时,表 B 对应的关联数据会自动删除,这称为级联删除,建议在定义外键时考虑它。 否则只能先删除表B中的数据,再删除表A,因为如果先删除表A中的数据,会因为外键约束而无法删除,希望能帮到您。

  16. 匿名用户2024-01-15

    你能解释一下吗? 什么是 a 和 b,什么是 id 和 classid,最好在表结构中发布数据。

相关回答
22个回答2024-06-30

房东:你的想法本身就错了,使用数据库最大的关键是数据库能做什么,不要轻易改变,你想要的那种结果,有必要吗? 一点也不。 >>>More

22个回答2024-06-30

您可以使用工具栏的替换功能一次删除相同颜色的文本,操作方法如下: >>>More

20个回答2024-06-30

第一种类型:自定义删除(即删除要删除的历史记录) 在搜索网页的搜索栏中,点击鼠标左键拆分两次,就会出现之前搜索到的历史记录。 然后用鼠标指向要删除的历史记录(注意: >>>More

13个回答2024-06-30

update a set name=substring(name,1,case

when locate('/',name)!=0 then locate('/',name)-1 >>>More

13个回答2024-06-30

据我所知,可以从以下几个方面来做:

1.联系吧老板,请删除吧老板,如果联系不上酒吧老板,可以在帖子里发消息,多留几条,引起酒吧老板的注意,请酒吧老板删除,一般酒吧老板会帮忙。 >>>More