Django on_delete参数在sql级别操作中不生效问题

这篇具有很好参考价值的文章主要介绍了Django on_delete参数在sql级别操作中不生效问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

class AA(models.Model):
    name = models.CharField(max_length=128)

    class Meta:
        db_table = 'aa'


class BB(models.Model):
    name = models.CharField(max_length=128)
    aa = models.ForeignKey(AA, null=True, on_delete=models.CASCADE)

    class Meta:
        db_table = 'bb'

如上当使用ORM删除aa表中的数据时,与之关联的bb表中的数据也会被删除。

然而当直接执行sql语句删除aa表中数据时,会报错:

[23000][1451] Cannot delete or update a parent row: a foreign key constraint fails (`workflow`.`bb`, CONSTRAINT `bb_aa_id_b7ac1759_fk_aa_id` FOREIGN KEY (`aa_id`) REFERENCES `aa` (`id`))

也就是说Django不会在数据库层面设置on_delete参数,官方文档说明,取而代之的是数据库会使用默认的on_delete参数,以mysql为例此参数会被设置为on_delete=no_action,进而才会导致sql删除报错。

Django on_delete参数在sql级别操作中不生效问题,django,sql,数据库

想避免生成类似bb_aa_id_b7ac1759_fk_aa_id的外间约束,可以设置db_constraint=False,然而,这也意味着你需要自行负责确保相关数据的完整性和一致性,因为数据库不再强制执行外键完整性。

当然Django官方也在计划支持数据库级别的级联操作,敬请期待吧。Add support for database-level cascading options文章来源地址https://www.toymoban.com/news/detail-603740.html

到了这里,关于Django on_delete参数在sql级别操作中不生效问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL注入_insert&delete&update&selete

    一. SQL注入介绍 1.1 sql注入概念 1.1.1 sql注入的实质:数据库将用户输入的数据当作代码执行 1.1.2 sql注入产生的条件 用户能控制输入 原本程序要执行的代码,拼接了用户输入的数据然后进行执行 1.2 sql注入注入点判断 1.2.1 判断是否存在可控变量 抓包判断 如图所示,id=1与subm

    2023年04月16日
    浏览(28)
  • 【ABAP】OPEN SQL(六)「DELETE语句 | MODIFY语句」

    💂 作者简介: THUNDER王,一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学本科在读,同时任汉硕云(广东)科技有限公司ABAP开发顾问。在学习工作中,我通常使用偏后端的开发语言ABAP,SQL进行任务的完成,对SAP企业管理系统,SAP ABAP开发和数据库具有较

    2024年02月08日
    浏览(32)
  • mycat设置sql隔离级别的问题

    General log中出现大量SQL “SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”。 该语句会引起两个问题, 1: \\\"REPEATABLE READ\\\"不是我们预期的事物隔离级别。 2: 大量无效的SQL影响性能。 注: MySql的可重复读会带来怎样的问题,可以参考该文章。https://www.jianshu.com/p/f7360d259878 排查过程涉及

    2024年02月16日
    浏览(39)
  • SQL语句中删除表数据drop、truncate和delete的用法

    一、SQL中的语法 1、drop table 表名称 eg: drop table dbo.Sys_Test 2、truncate table 表名称 eg: truncate table dbo.Sys_Test 3、delete from 表名称 where 列名称 = 值 eg: delete from dbo.Sys_Test where test=\\\'test\\\' 二、drop,truncate,delete区别 1、drop (删除表):删除内容和定义,释放空间。简单来说就是把整个表去

    2024年02月05日
    浏览(82)
  • Mysql全局级别修改SQL模式的详细教程

    Cause: java.sql.SQLSyntaxErrorException: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column \\\'btc-cloud.t1.id\\\' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_byn; bad SQL grammar []; nested exce Ubuntu22 环境 Mysql8.0 打开终端。 使用文本编辑

    2024年02月21日
    浏览(29)
  • 【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

    【JavaEE】Spring 事务(2) 参数 作用 value 当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器 transactionManager 当配置了多个事务管理器时,可以使用该属性指定选择哪个事务管理器 isolation 事务的隔离级别.默认值为solation.DEFAULT propagation 事务的传播机制,默认值

    2024年02月10日
    浏览(42)
  • Unity 启动时带参数,网页后端进行数据交互 UnityWebRequest ,Post,Get,Delete

    启动传参数可以参考这篇文章: 浏览器调用本地exe(应用程序)方法 Unity准备工作 需要用到这个API 官方解释:返回包含当前进程的命令行参数的字符串数组 返回值是一个string[],当Length1的时候就是带参数,注意:在UnityEditor模式也就是编辑器模式会有默认参数返回,Length是大于1的 常用

    2024年02月16日
    浏览(34)
  • 解决Cause: java.sql.SQLException: sql injection violation, dbType mysql ... token IDENTIFIER deleted错误

    本文不仅帮你解决错误,还帮你分析错误的原因👇👇 今天写好 创建数据源 的接口,并启动项目后,通过 Knife4j 调用单接口,但保出如下图错误: 于是,查看后端输出详细的错误信息,如下所示: 由于篇幅有限,没有粘贴出全部的错误信息。 由于错误信息很多,我们只需

    2024年02月04日
    浏览(35)
  • 自己动手做数据库系统:解释执行 update 和 delete 对应的 sql 语句

    在上一节我们完成了 select 语句的解释执行,本节我们看看 Update 和 Delete 对应的语句如何解释执行,当然他们的实现原理跟我们前面实现的 select 语句执行大同小异。无论是 update还是 delete 都是对数据表的修改,因此他们的实现方法基本相同。 假设我们要执行如下 sql 语句:

    2024年01月22日
    浏览(39)
  • [SQL系列] 从头开始学PostgreSQL 借鉴MYSQL的隔离级别

    SQL 的隔离级别是指在数据库中,事务之间相互隔离的程度。当事务 A 修改了某条数据后,如果事务 B 在这个时候读取该数据,会发生什么情况呢?这取决于数据库的隔离级别设置。 常用的事务隔离级别类型包括以下几种: READ UNCOMMITTED(读未提交):该隔离级别允许读取未提

    2024年02月15日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包