DDL语句和DML语句在同一Session中时事务会自动被提交

2022-02-15  本文已影响0人  马云生

什么是DDL?

  DDL(Data Definition Language)可以简单理解为用于创建数据库实体的语句,如create table, create directory , create trigger

  create  and replace procedure, create and replace function 等等。

什么是DML?

DML(Data Manipulation Language)可以简单理解为数据库对数据的操作的语句,如 INSERT、UPDATE、DELETE

与DDL和DML相同分类的名词,还有DQL(Data QueryLanguage)和DCL(Data Control Language)定义可以自行了解

DQL主要有Select语句,DCL主要是负责权限的语句如Grant,revoke语句。

言归正传

     这次主要说的是当在一个存储过程(procedure)或函数(function)里,同时存在DDL语句和DML语句的时候需要注意的内容

由于DDL语句在执行前和执行后会自动提交事务,所以当在DML(update,insert,delete)语句的后面执行了DDL(Create and replace precedure / function)语句就会发现

虽然你没有明确提交数据,事务也被提交了,这是因为DDL执行前和执行后都自动提交事务(即使DDL失败,由于在执行DDL之前

就自动提交了事务,所以DML的修改也会被反应到数据库里)。

上一篇下一篇

猜你喜欢

热点阅读