报错信息如下: [Code: 1093, SQL State: HY000] You can’t specify target table ‘bd_bankaccbas’ for update in...FROM clause 译文: 不能在 FROM 子句中指定目标表 ‘bd_bankaccbas’ 进行更新。...有问题的 SQL 语句如下,它在 oracle 数据库的语法是支持的,但是 mysql 就不支持直接这么写: from 和 update 都是同一张表。...update bd_bankaccbas set modifier = (select creator from bd_bankaccbas where accnum = '88004') where...update bd_bankaccbas set modifier = (select t.creator from (select creator from bd_bankaccbas where
= 'hello' ; 有时候执行多表关联更新时会遇到 ERROR 1093 (HY000): You can't specify target table 'xxx' for update in...FROM clause 这个错误提示,其实不止更新语句,删除语句也会有这个问题。...实际上是因为要更新的目标表同时存在子查询里面,请看下面这个例子。...官方文档给出的建议是使用派生表(在 FROM 子句后面可替代表的子查询称作派生表)。...的优化器将派生表物化了(物化的操作可理解为将查询结果存到内部临时表中),因此更新的目标表和子查询里面的表就不是同一个。
· 错误:1092 SQLSTATE: HY000 (ER_INSERT_INFO) 消息:记录,%ld;复制,%ld;告警,%ld · 错误:1093 SQLSTATE: HY000 (ER_UPDATE_TABLE_USED...) 消息:不能在FROM子句中制定要更新的目标表'%s'。...· 错误:1288 SQLSTATE: HY000 (ER_NON_UPDATABLE_TABLE) 消息:%s的目标表%s不可更新。...· 错误:1349 SQLSTATE: HY000 (ER_VIEW_SELECT_DERIVED) 消息:视图的SELECT在FROM子句中包含子查询。...· 错误:1459 SQLSTATE: HY000 (ER_PARTITION_WRONG_NO_SUBPART_ERROR) 消息:定义了错误的子分区数,与前面的设置不匹配。
错误:1288 SQLSTATE: HY000 (ER_NON_UPDATABLE_TABLE) 消息:%s的目标表%s不可更新。...) 消息:不正确的表定义,在DEFAULT或ON UPDATE子句中,对于CURRENT_TIMESTAMP,只能有一个TIMESTAMP列。...错误:1349 SQLSTATE: HY000 (ER_VIEW_SELECT_DERIVED) 消息:视图的SELECT在FROM子句中包含子查询。...错误:1442 SQLSTATE: HY000 (ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG) 消息:由于它已被调用了该存储函数/触发程序的语句使用,不能在存储函数/触发程序中更新表...错误:1459 SQLSTATE: HY000 (ER_PARTITION_WRONG_NO_SUBPART_ERROR) 消息:定义了错误的子分区数,与前面的设置不匹配。
;如果不声明msg,执行语句时,MySQL报错; SIGNAL SQLSTATE 'HY000' SET message_text = msg; 如果该SIGNAL语句指示特定SQLSTATE值,则该值用于表示指定的条件...“HY000”被称为“一般错误”: 如果命令出现一般错误,则会触发后面的message中的消息; 注:该语句只是个人理解,也是一知半解,如果有更好的解释,欢迎留言。...'; SIGNAL SQLSTATE 'HY000' SET message_text = msg; END IF END UPDATE触发器: 在update触发器的代码中,可以引用一个名为OLD...的虚拟表访问以前的值,即:update未执行前的值,还可以引用一个名为NEW的虚拟表访问新更新的值; 在before update触发器中,NEW中的值可能也被更新(允许修改将要用于update语句中的值...; 注:upper:将文本转换为大写: 例二:不允许修改student表中的学号sno,如果修改该列则显示错误信息并取消操作。
不知道大家是否有过维护的数据库表业务数据被人或者因为程序bug导致全表更新,全表删除的痛苦经历,恢复业务数据的过程真的太痛苦了,尤其与交易和钱相关的数据,必须恢复成和原来一模一样,那能不能在数据库层面架起最后一道安全堡垒...mysql> delete from t_test1; ERROR 1175 (HY000): You are using safe update mode and you tried to update...mysql> delete from t_test1 where 1=1; ERROR 1175 (HY000): You are using safe update mode and you tried...从具体的报错信息中,也是可以看到原因以及解决方案:Edit–>Perferences–>SQL Editor 在实际通过workbench连接生产环境数据库的时候,是强烈不建议关闭的,避免人为导致全表删除或全表更新的操作...limit(此时where子句中列可以不是索引列) 在生产环境中,建议开启该参数设置,这样不仅可以避免全表更新或删除的操作,也可以引导开发人员为where条件过滤的字段添加索引等;
; 注意,你的 ANSI SQL 不同意你在一个WHERE子句中引用一个别名。...正则 正則表達式(regex)是定义复杂查询的一个强有力的工具。 这里是一个简单的资料,它忽略了一些具体的信息。 正則表達式定义了一个字符串的规则。最简单的正則表達式不包含不论什么保留字。...DELETE t1 FROM test AS t1, test2 WHERE … 支持多个数据之间的多表删除,可是在这样的情况下,你必须指定表,而不能使用别名: DELETE test1.tmp1,...test2.tmp2 FROM test1.tmp1, test2.tmp2 WHERE … 当前,您不能从同样表的子查询中,删除同一表的数据 抛出异常的爱 1 星期前 1016错误...1092 HY000 ER_UPDATE_TABLE_USED 1093 HY000 ER_NO_SUCH_THREAD 1094 HY000 ER_KILL_DENIED_ERROR 1095
下面的语句在执行的时候抛出了错误。...WHERE out_trade_no = 'bestpay_order_no1491812746329')); ERROR 1093 (HY000): You can't...还是有的,那就是通过一种特殊的子查询来完成,也就是derived table 所以上面的语句使用如下的方式就可以破解。...> select * from (select * from t_fund_info) t where t.id=138031; ERROR 126 (HY000): Incorrect key file...查看错误里的信息,是一个MYI的文件,显然是使用了临时表的方式,典型的一个myisam表。
在搜索的 UPDATE 或 DELETE 语句内标识的行数为零。在 FETCH 语句中引用的游标位置处于结果表最后一行之后。 02501 游标位置对于当前行的 FETCH 无效。...42628 在变换定义中多次定义了 TO SQL 或 FROM SQL 变换函数。42629 必须为 SQL 例程指定参数名。...42805 ORDER BY 子句中的整数不标识结果表中的列。42806 不能将某值赋予某主机变量, 因为数据类型不兼容。42807 对该对象不允许执行 INSERT、UPDATE 或 DELETE。...428C9 不能将 ROWID 列指定为 INSERT 或 UPDATE 的目标列。 428CA 处于追加方式的表不能具有集群索引。 428CB 表空间的页大小必须与相关联的缓冲池的页大小相匹配。...428DQ 子表或子视图的模式名不能与其上一级表或上一级视图的模式名不同。 428DR 无法将操作应用于子表或子视图。 428DS 不能在子表中定义指定列的索引。
这是一项新功能,用于指定在插入或更新到一行之前检查值的条件。如果表的任何行的搜索条件的结果为 FALSE,则约束可能返回错误(但如果结果为 UNKNOWN 或 TRUE,则约束不会返回错误)。...要牢记的使用规则: AUTO_INCREMENT 自增列不允许使用 引用另一个表中的另一列不允许使用 存储的函数和用户定义的函数不允许使用 存储过程和函数参数不允许使用 子查询不允许使用 在外键中用于后续操作...(ON UPDATE,ON DELETE)的列不允许使用 为下一条语句 INSERT,UPDATE,REPLACE,LOAD DATA 和 LOAD XML 评估此次监测。...当且仅当表行的指定条件评估为 TRUE 或 UNKNOWN(对于 NULL 列值)时,才满足 CHECK 监测约束,否则违反约束。 让我们从前面的逻辑中看一个例子。...,但是根据我以前作为程序员的经验,我不建议在表中添加逻辑,因为除非您无法访问应用程序代码,否则很难找到或调试错误。
报错意思是:不能在from子句中指定要更新的目标表 a 如: customer 银行客户信息表 bankInfo 银行账户 修改张三的银行卡密码为123456: update bankInfo...NameId from customer where `Name`='张三')); # 不能在from子句中指定要更新的目标表 执行上面SQL语句时出现这个错误,是因为 在更新这个表和数据的同时又去查询这个表数据...应这样解决: 把要更新的数据表符合要求(的几列)数据查询出来,做为一个第三方表(临时表),然后从中筛选更新。...UPDATE bankInfo AS a SET `password`=123456 WHERE a.idCard=(SELECT b.idCard FROM (SELECT * FROM bankInfo...WHERE NameId=(SELECT NameId from customer WHERE `Name`='张三')) AS b); 这样就可以进行表数据更新啦~ 来源:https://blog.csdn.net
FROM子句中的表值函数 表值函数是一个类查询,它被投影为一个存储过程,并返回单个结果集。 表值函数是任何具有SqlProc TRUE的类查询。...,"End of B data" } 表值函数只能在SELECT语句或DECLARE语句的FROM子句中使用。表值函数名可以用模式名限定,也可以用非限定名(没有模式名)限定;非限定名使用默认模式。...在SELECT语句FROM子句中,只要可以使用表名,就可以使用表值函数。它可以在视图或子查询中使用,并且可以使用逗号分隔的列表或显式联接语法与其他表引用项联接。...表值函数不能直接用于INSERT、UPDATE或DELETE语句。但是,可以为这些命令指定子查询,以指定表值函数。...SQL没有为表值函数定义EXTENTSIZE,也没有为表值函数列定义SELECTIVITY。 FROM子句中的子查询 可以在FROM子句中指定子查询。 这称为流子查询。
说明 2:在创建视图时,没有在视图名后面指定字段列表,则视图中字段列表默认和 SELECT 语句中的字段列表一致。如果 SELECT 语句中给字段取了别名,那么视图中的字段名和别名相同。...另外当视图定义出现如下情况时,视图不支持更新操作: 在定义视图的时候指定了 “ALGORITHM = TEMPTABLE”,视图将不支持 INSERT 和 DELETE 操作; 视图中不包含基表中所有被定义为非空又未指定默认值的列...数学表达式 或 子查询 ,视图将不支持 INSERT,也不支持 UPDATE 使用了数学表达式、子查询的字段值; 在定义视图的 SELECT 语句后的字段列表中使用 DISTINCT 、 聚合函数 、...GROUP BY 、 HAVING 、 UNION 等,视图将不支持 INSERT、UPDATE、DELETE; 在定义视图的 SELECT 语句中包含了子查询,而子查询中引用了 FROM 后面的表...employees WHERE department_id = 80; 说明:CREATE VIEW 子句中各列的别名应和子查询中各列相对应。
insert into dept(deptno,dname,loc) values(19,'xgj','BEIJING'); 讨论 作为一种简便方式,在insert语句中,可以省略字段列表, 然而,如果语句中没有列出要插入行中的目标字段...emp ; 也可以先复制表的定义,然后再新增数据 create table emp2 as select * from emp where 1=2; ---- 注意: 复制的表不包含默认值等约束信息,...如果在 INSERT 或 UPDATE 操作期间违反了条件,则返回 SQL 错误。 举例说明: 我们创建一个视图,并使用了with check option来限制了视图。...这是因为前面我们在创建视图时指定了witch check option关键字,这也就是说,更新后的每一条数据仍然要满足创建视图时指定的where条件,所以我们这里发生了错误ORA-01402。...注:多表 INSERT 语句上的约束 a、你只能在表而不能在视图上执行多表插入; b、你不能执行一个多表插入到一个远程表; c、在执行一个多表插入时,你不能指定一个表集合表达式; d、在一个多表插入中
如果CREATE VIEW语句指定了此功能,则可以为视图发出INSERT、UPDATE和DELETE语句。要允许通过视图进行更新,请在定义视图时指定WITH CHECK选项(默认值)。...要通过视图进行更新,必须具有要更新表或视图的适当权限,如GRANT命令所指定。 通过视图更新受以下限制: 该视图不能是投影为视图的类查询。 视图的类不能包含类参数READONLY=1。...视图的SELECT语句只能有一个表引用;它不能在SELECT-LIST或WHERE子句中包含FROM子句、联接语法或箭头语法。表引用必须指定可更新的表或可更新的视图。...有两个可用的检查选项: WITH LOCAL CHECK OPTION-仅检查INSERT或UPDATE语句中指定的视图的WHERE子句。...WITH CASCADED CHECK OPTION-检查INSERT或UPDATE语句中指定的视图的WHERE子句和所有基础视图。
INSERT和DELETE操作; 视图中不包含基表中所有被定义为非空又未指定默认值的列,视图将不支持INSERT操作; 在定义视图的SELECT语句中使用了 JOIN联合查询 ,视图将不支持INSERT...和DELETE操作; 在定义视图的SELECT语句后的字段列表中使用了 数学表达式 或 子查询 ,视图将不支持INSERT,也不支持UPDATE使用了数学表达式、子查询的字段值; 在定义视图的SELECT...语句后的字段列表中使用 DISTINCT 、 聚合函数 、 GROUP BY 、 HAVING 、UNION 等,视图将不支持INSERT、UPDATE、DELETE; 在定义视图的SELECT语句中包含了子查询...,而子查询中引用了FROM后面的表,视图将不支持INSERT、UPDATE、DELETE; 视图定义基于一个 不可更新视图 ; 常量视图不可以进行更新 示例: mysql> INSERT INTO emp_dept...,主要用于 方便查询 ,不建议更新视图的数据。
Oracle可以通过将该隐含参数设置为TRUE,使得Oracle优化器忽略语句中所有的Hint。...l Hint中指定具体表名时,如果该表在对应SQL文本中有别名,那么在Hint中应该使用该表的别名。...Hint生效的范围仅限于它本身所在的查询块,如果在Hint中不指定该Hint生效的查询块,那么Oracle会默认认为它生效的范围是指该Hint所处于的查询块。...NOLOGGING */ FROM T1; UPDATE /*+ NOLOGGING */ T1 SET A='1'; 实际上,上述所有的SQL没有一个能够实现“不产生”日志的数据更改操作。...事实上,NOLOGGING并不是Oracle的一个有效的Hint,而是一个SQL关键字,通常用于DDL语句中。这里NOLOGGING相当于给SELECT的表指定了一个别名为“NOLOGGING”。
如果SELECT语句指定了ORDER BY和TOP子句,则作为“TOP”行的返回的记录将与ORDER BY子句中指定的顺序一致。 为例。...因此,如果指定后续的DECLARE CURSOR FOR UPDATE语句,则忽略FOR UPDATE子句,并将游标声明为只读。...不能在ORDER BY子句中直接指定聚合函数; 尝试这样做会产生SQLCODE -73错误。 可以在ORDER BY子句中根据列别名或列号指定任何选择项,包括聚合函数、窗口函数或表达式。...不能在表达式中指定列别名,也不能使用变量提供它。...它们不指向表本身中列的位置。 但是,可以按列号对SELECT *结果进行排序; 如果RowID是公共的,它就被计算为第1列,如果RowID是隐藏的,它就不被计算为第1列。
子查询必须用圆括号括起来。 WHERE子句可以使用=(内部连接)符号连接操作符指定两个表之间的显式连接。 WHERE子句可以使用箭头语法(- >)操作符在基表和来自另一个表的字段之间指定隐式连接。...不能通过列别名指定字段; 尝试这样做会产生SQLCODE -29错误。 但是,可以使用子查询来定义列别名,然后在WHERE子句中使用该别名。...以不正确的格式指定时间数据将产生SQLCODE -147错误。 在逻辑模式下,以不正确的格式指定日期或时间数据不会产生错误,但要么不返回数据,要么返回非预期的数据。...这样做将导致SQLCODE -313错误。 但是,在WHERE子句中允许使用流字段: 流空测试:可以指定流字段IS null或流字段IS NOT null。...它对应的数据类型为VARBINARY,默认MAXLEN为32749。 因此,动态SQL不能在WHERE子句比较中使用%List数据。
或DELETE)和FROM语句中的表和视图命名不合法 -119 42803 HAVING语句中的列的列表与GROUP BY语句中的列列表不匹配 -120 42903 不允许WHERE语句、SET语句、VALUES...-126 42829 不能为一个UPDATE语句指定ORDER BY语句 -127 42905 在子选择中DISTINCT只能指定一次 -128 42601 SQL谓词中NULL使用不当 -129 54004...该语句可能在另外的RDBMS上有效,也有可能在其他的上下文中有效(例如,VALUES只能在触发器中出现) -144 58003 指定的段号无效 -147 42809 某一源函数不能更改。...没有定义的对象名 -205 42703 指定的表的列名无效 -206 42703 列名没有在FROM语句所引用的任何表中,或者没有在定义触发器所在的表中 -208 42707 不能ORDER BY指定列...-765 560A3 表和数据库不兼容 -766 560A4 不能对辅助表进行请求的操作 -767 42626 CREATE INDEX失败,因为在辅助表中为索引指定了列,或者因为没有为非辅助表的索引指定列
领取专属 10元无门槛券
手把手带您无忧上云