- 浏览: 408706 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (347)
- java基础 (58)
- ajax (10)
- s2sh (10)
- 版本控制 (4)
- 数据库 (34)
- 服务器 (4)
- 开发工具 (8)
- javascript (15)
- soockte (5)
- ext (2)
- 环境搭建 (7)
- struts2 (9)
- 找工作中的面试技巧 (2)
- 承接网站零活 (0)
- JNI+JONSE+OGNL (8)
- 性能优化 (4)
- Android开发 (5)
- xul (8)
- jquery (2)
- 线程 (3)
- jsp+jdbc (7)
- servlet (2)
- java对xml操作 (1)
- IO流的操作 (10)
- 项目开发前配置 (1)
- css (0)
- 上传、下载 (2)
- 知识探讨 (2)
- html (2)
- HQL (0)
- 工作技巧 (1)
- IT (1)
- Hibernate杂谈 (10)
- Spring杂谈 (35)
- DWR (5)
- JUnit测试 (3)
- EasyMock测试web (1)
- ibatis (6)
- maysql (5)
- C++ (0)
- 正则表达式(解剖) (1)
- 密码安全 (2)
- 上传 (1)
- socket (1)
- jni(java与c++结合) (1)
- jdk版本问题 (0)
- tomcat版本问题 (5)
- linux基本命令(初学) (7)
- linux项目发布 (1)
- 3年的经验总结 (1)
- 加解密 (2)
- 高级java阶段 (2)
- java内存分区 (1)
- 浏览器 (1)
- 职业规划 (1)
- 管理 (5)
- java语音 (1)
- SSH (1)
- jsp (3)
- extjs (1)
- uml (2)
- 加密 (1)
- web (2)
- Ant (1)
- 自述 (1)
- Linux (1)
- ssh源码解剖 (1)
- 代码优化 (1)
- 设计模式 (0)
- xml (2)
- JOSN (1)
- scala (0)
- hadoop (0)
- spark (0)
- hana (1)
- shior (1)
- java Word (6)
- java PDF (4)
- java Excel (0)
最新评论
-
高级java工程师:
ztao2333 写道谢谢。收藏下这个总结。呵呵
温习jdk和tomcat -
ztao2333:
大写的,不是大学的
温习jdk和tomcat -
ztao2333:
谢谢。收藏下这个总结。
温习jdk和tomcat -
the_small_base_:
你好,可以提供调用方法吗?需要的Jar,能发下源码吗?谢谢
java实现语音 -
高级java工程师:
文思涌动 写道楼主新年好。可否再传一遍给我,我没有收到, 不清 ...
s2sh整合
曾经因为级联删除的问题浪费了N多时间,顾此在这里写下小小心得,供大家借鉴。
在数据库分别建立表t_food(菜单)和表t_book(订单),如下所示:
t_food:
————————————————————————————
food_id (主键) food_name food_price
1 苹果 2.4
2 香蕉 3.5
……
————————————————————————————
t_book:
————————————————————————————
id foodid(外键) num
1 1 5
2 2 4
……
————————————————————————————
如果你想删除t_food中的某一行数据,就有可能会出现如下错误:
java.sql.SQLException: Cannot delete or update a parent row: a foreign key constraint fails (`shopcar2`.`t_book`, CONSTRAINT `b_fid_o_fid` FOREIGN KEY (`foodid`) REFERENCES `t_food` (`food_id`))
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:929)
at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:91)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:319)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:270)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:191)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:227)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:817)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:444)
at java.lang.Thread.run(Thread.java:619)
为什么会出现这样的问题呢?那是因为你所删除的数据表t_food中包含了主键food_id,如果直接删除数据,那么,
food_id对应的外键foodid就没有被指向,自然就会出现这种错误。
那么,如何解决这个问题呢?有两种方法:
第一种,也是最直接的,那就是在删除t_food的数据行之前,先将其所对应的t_book中的数据行删除。如你想删除
t_food中food_id=1所对应的数据行,那么,你可以先删除t_book中foodid=1对应的数据行,然后再删除t_food中
food_id=1所对应的数据行。
第二种,在建立数据库时,设置主外键on delete cascade。这样,在删除主键对应数据时,外键对应的数据也会
被删除。
此外,还有级联修改,它跟级联删除一样会出现以上问题,解决方法相似。建立数据库时,设置主外键on
update cascade。
在数据库分别建立表t_food(菜单)和表t_book(订单),如下所示:
t_food:
————————————————————————————
food_id (主键) food_name food_price
1 苹果 2.4
2 香蕉 3.5
……
————————————————————————————
t_book:
————————————————————————————
id foodid(外键) num
1 1 5
2 2 4
……
————————————————————————————
如果你想删除t_food中的某一行数据,就有可能会出现如下错误:
java.sql.SQLException: Cannot delete or update a parent row: a foreign key constraint fails (`shopcar2`.`t_book`, CONSTRAINT `b_fid_o_fid` FOREIGN KEY (`foodid`) REFERENCES `t_food` (`food_id`))
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2921)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1570)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2972)
at com.mysql.jdbc.Connection.execSQL(Connection.java:2902)
at com.mysql.jdbc.Statement.executeUpdate(Statement.java:929)
at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:91)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:389)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:319)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:270)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:191)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:227)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:211)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:817)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:623)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:444)
at java.lang.Thread.run(Thread.java:619)
为什么会出现这样的问题呢?那是因为你所删除的数据表t_food中包含了主键food_id,如果直接删除数据,那么,
food_id对应的外键foodid就没有被指向,自然就会出现这种错误。
那么,如何解决这个问题呢?有两种方法:
第一种,也是最直接的,那就是在删除t_food的数据行之前,先将其所对应的t_book中的数据行删除。如你想删除
t_food中food_id=1所对应的数据行,那么,你可以先删除t_book中foodid=1对应的数据行,然后再删除t_food中
food_id=1所对应的数据行。
第二种,在建立数据库时,设置主外键on delete cascade。这样,在删除主键对应数据时,外键对应的数据也会
被删除。
此外,还有级联修改,它跟级联删除一样会出现以上问题,解决方法相似。建立数据库时,设置主外键on
update cascade。
发表评论
-
SQL总结存储过程
2017-02-16 10:13 389概念 存储过程(Stored Procedure):已预编译 ... -
oracle设置定时任务job调度执行存储过程或pl/sql代码块
2017-02-16 09:53 433目前oracle数据库设置定时任务job调度一般有两种方式,分 ... -
sql大全
2013-07-12 19:02 1032经典SQL语句大全 一、基础 1、说明: ... -
Linux安装mysql——源码安装
2013-06-05 09:17 7881.假设已经有mysql-5.5.10.tar.gz以及cma ... -
hql语句集合
2013-04-21 19:13 1075/** * */ package com.b510 ... -
oracle命令导入dmp文件与给用户受权
2012-05-03 15:57 1012创建账号:CREATE USER vdrs IDENTIFIE ... -
oracle对日期进行操作
2012-03-19 15:41 1249一下心血来潮,把部分Oracle对时间的一些处理,整理了一下, ... -
如何查出同一张表中字段值重复的记录
2012-03-17 09:45 1593比如现在有一人员表(表名:peosons) 若想将姓名、身份证 ... -
数据库驱动大全
2011-12-26 09:47 928经常因为链接字符串记不住或者记错的原因浪费时间,终于有时间把常 ... -
用JSP导出ORACLE的数据表DDL
2011-12-08 10:47 1107EXPDDL.JSP <%@ page cont ... -
jsp脚本实现本分数据库
2011-12-08 10:44 887JSP导出Oracle数据表是一个在开发应用时的常用的操作,那 ... -
oracle创建id自增及相关增删改查操作
2011-11-21 16:46 987新建下载权限记录表 DOWNLOADPOPE_TAB ... -
java.sql.SQLException: Io 异常: The Network Adapter could not establish the connec
2011-10-28 15:43 1279WARN: SettingsFactory,103 - Cou ... -
oracle安装及使用
2011-10-16 23:50 920安装后数据库 1.使用plsql打开,一般选项 口 ... -
递归数
2011-10-10 17:30 1109有的情况下,我们需要用递归的方法整理数据,这才程序中很容易 ... -
mysql中递归树状结构
2011-10-10 17:20 11377在Oracle 中我们知道有一个 Hierarchic ... -
mysql解决乱码问题?
2011-06-15 14:33 826mysql数据库,乱码解决 ... -
MySql
2011-06-14 16:12 8411.安装之后 2.创建数据库 s2sh(库名) creat ... -
数据库死锁的解释?以及什么是死锁
2011-04-25 10:41 854什么是数据库死锁 每个使用关系型数据库的程序都可能 ... -
oracle控制约束
2011-04-11 17:19 746Oracle约束的启用和停用 ...
相关推荐
本文将深入探讨如何在Hibernate中处理Many-to-Many关系的级联保存、级联更新和级联删除。 一、Many-to-Many关系基础 在数据库设计中,Many-to-Many关系意味着两个实体之间存在多对多的关系。例如,学生可以选修多门...
级联删除和级联更新是数据库管理中非常重要的概念,特别是在多表关联的情况下,能够确保数据的一致性和完整性。本文将详细介绍如何在SQL Server中实现级联更新和级联删除,包括通过触发器的方式和使用外键约束的方式...
### SQL Server 创建触发器实现级联删除 在数据库管理中,触发器是一种特殊类型的存储过程,它被设计为响应特定的事件(如插入、更新或删除数据)而自动执行。本文将详细介绍如何在 SQL Server 中创建一个触发器来...
Oracle数据库中的级联查询、级联删除和级联更新是数据库设计中常用的操作,它们用于在多表关联的关系型数据库中实现数据的联动处理。在Oracle中,这些操作主要涉及外键约束和触发器。 首先,级联查询是通过自连接来...
级联的操作有级联更新,级联删除。 二、级联相应的操作 在启用一个级联更新选项后,就可在存在相匹配的外键值的前提下更改一个主键值。系统会相应地更新所有匹配的外键值。如果在表A中将姓名为王五的记录改为李四,...
2. 级联删除(Cascade Type.REMOVE) 当设置为`CascadeType.REMOVE`时,如果删除了父实体,与之关联的子实体也会被删除。这在处理一对多或者多对多关系时非常有用,可以确保相关的数据在数据库中得到一致性的清理。...
如果在创建表时未设置级联删除,可以后续通过修改表结构来添加。这涉及删除原有的外键约束,然后重新创建带`ON DELETE CASCADE`的约束,例如: ```sql ALTER TABLE "U_WEN_BOOK"."GCHILTAB1" DROP CONSTRAINT "FK_...
例如,在一对多或者多对多的关系中,如果删除了一个父记录,而这个父记录与多个子记录有关联,级联删除会确保所有子记录也被同时删除,避免了数据的不一致性和孤立的记录。 "INverse"属性则通常在ORM(对象关系映射...
- Hibernate等ORM框架提供了级联操作的支持,可以在实体类的配置中定义级联类型,如CascadeType.ALL(包含保存、更新、删除和加载)。 3. **单选按钮(Radio Button)**: - 在Java Swing或JavaFX中,单选按钮...
2. **DOM操作**:使用DOM(文档对象模型)API,JavaScript可以创建、修改或删除HTML元素,从而动态构建和更新菜单结构。 3. **数据获取**:通过Ajax(异步JavaScript和XML)技术,JavaScript可以向服务器发送请求,...
4. `REMOVE`:当删除一个实体时,`REMOVE`会级联删除所有关联的实体。这在保持数据一致性时非常有用,避免了因忘记删除关联实体而导致的数据不一致。 5. `REFRESH`:刷新实体时,`REFRESH`会从数据库中获取最新的...
1. DOM操作:JavaScript通过Document Object Model (DOM)来操控网页元素,包括创建、修改和删除HTML元素。在级联菜单中,我们需要用到DOM API来获取、改变文本框的值和显示状态。 2. 事件监听:使用`...
在描述中提到的"动态元素级联",指的是通过JavaScript或者jQuery动态地改变HTML元素,包括创建、修改或删除元素,以实现级联效果。例如,当用户在第一个`select`中做出选择时,我们可以监听其`change`事件,然后根据...
要实现级联效果,我们需要获取或创建下拉列表(`<select>`元素),添加或删除选项(`<option>`元素),以及监听用户的选中事件。例如,可以使用`document.getElementById()`或`document.querySelector()`找到目标...
- **级联删除**:当删除父表中的一条记录时,自动删除所有子表中与此记录相关的所有记录。 ### 二、省市区表设计 #### 1. 表结构设计 在文件中,可以看到`province`、`city`和`area`三个表的设计。这些表的设计都...
7. 动态级联菜单:如果你需要根据某些条件动态改变级联菜单,可以在运行时添加或删除 `JMenuItem`。注意,更改后可能需要重新布置菜单栏以确保正确显示。 8. 国际化支持:Java Swing 支持多语言环境,你可以通过...
这需要对DOM(Document Object Model)有深入的理解,以便动态地创建、修改和删除DOM元素。 在JavaScript中,级联插件的API设计可能包括以下部分: 1. 初始化:`$(selector).cascade(options)`,用于选择指定的DOM...
在JS中,我们通过DOM API来创建、查找、修改和删除HTML元素。 2. 事件监听:在JS中,我们需要为菜单项添加点击事件监听器,以便在用户点击时触发相应的动作,如展开或收起子菜单。常用的事件有`click`、`mouseover`...
数据库操作代码通常涉及SELECT、INSERT、UPDATE和DELETE语句,它们用于从数据库检索、插入、修改和删除数据。在级联动态树的应用中,这些语句可能需要递归地处理整个树结构,以确保所有相关节点的状态正确反映在...
这有助于简化代码,但需要注意过度使用级联可能导致数据的意外修改。 **注意事项** 1. 双向关联可能会导致数据不一致,因此在处理关联时,需要确保在双方都进行同步更新。 2. 级联操作虽然方便,但可能引发性能问题...