社区

Oracle 高级技术 帖子详情 truncate是一个什么样的DDL语句? ifvlr 2015-04-21 08:23:51 请教论坛各位大侠 truncate是ddl语句么?网上的资料包括oracle官方文档都写truncate是ddl语言,那么我确认他是ddl语句,但是我truncate一张表后,select * from all_objects,在last_ddl_time字段显示的时间不是我当前truncate的时间,这是为啥?我测试的数据库是oracle 11g64位。

开始以为可能是oracle字典表没有及时跟新,于是我讲这个表的某个字段由可为空改为非空后,再查询,last_ddl_time字段显示的时间就是我刚才修改表的时间。

有人说truncate是特殊的DDL语句,但又没说明白,想请教其特殊性以及它的一些其他鲜为人知的细节。当然,truncate与delete的区别就不用叙说了。

...全文

1772 10 打赏 收藏 truncate是一个什么样的DDL语句? 请教论坛各位大侠 truncate是ddl语句么?网上的资料包括oracle官方文档都写truncate是ddl语言,那么我确认他是ddl语句,但是我truncate一张表后,select * from all_objects,在last_ddl_time字段显示的时间不是我当前truncate的时间,这是为啥?我测试的数据库是oracle 11g64位。 开始以为可能是oracle字典表没有及时跟新,于是我讲这个表的某个字段由可为空改为非空后,再查询,last_ddl_time字段显示的时间就 复制链接

扫一扫 分享 转发到动态 举报

写回复 配置赞助广告取 消

确 定

用AI写文章 10 条回复 切换为时间正序 请发表友善的回复… 发表回复 打赏红包 需支付: 0.00 元 取 消 确 定 Tiger_Zhao 2015-04-24 打赏举报 回复 楼主是不是数据比较多,truncate 还没结束就去查 last_ddl_time 了? 一颗向往数据的心丶 2015-04-24 打赏举报 回复 引用 8 楼 ifvlr 的回复:你做了truncate操作以后 last_ddl_time变了?

对,会在last_ddl_time体现。

Version:Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production ifvlr 2015-04-23 打赏举报 回复 引用 4 楼 wildwave 的回复:1. truncate是DDL语句

2. truncate操作以后,last_ddl_time会发生改变

3. last_ddl_time会记录该对象上一次出现ddl操作的时间,甚至包括依托于它的对象的ddl。例如,在该表上创建或删除一个索引也会改变last_ddl_time

针对你说的时间没变,检查

确定进行了truncate操作;

查看的object是否就是你进行过truncate操作的表;

比较下数据库时间和当前实际时间;

要么就是bug

以下情况都会导致last_ddl_time发生改变:

1.When DDL is performed on the dependent objects of the table.

For example when an index is created or altered.

2.When a table is truncated

3.When roles/privileges are granted/revoked.

@z_shousi

我在oracle11g 64位数据库上进行的测试,做了truncate,确定没有更新last_ddl_time,但是更改表结构,马上last_ddl_time就变了。

引用 5 楼 z_shousi 的回复:[quote=引用 4 楼 wildwave 的回复:]

以下情况都会导致last_ddl_time发生改变:

1.When DDL is performed on the dependent objects of the table.

For example when an index is created or altered.

2.When a table is truncated

3.When roles/privileges are granted/revoked.

@z_shousi

版主 是对的,我测试了一下。[/quote]

你做了truncate操作以后 last_ddl_time变了? 一颗向往数据的心丶 2015-04-23 打赏举报 回复 引用 4 楼 wildwave 的回复:以下情况都会导致last_ddl_time发生改变:

1.When DDL is performed on the dependent objects of the table.

For example when an index is created or altered.

2.When a table is truncated

3.When roles/privileges are granted/revoked.

@z_shousi

版主 是对的,我测试了一下。 ifvlr 2015-04-23 打赏举报 回复 引用 3 楼 Tiger_Zhao 的回复:一般DDL语句同时影响对象的定义和存储,truncate特殊在于它只影响存储。

大概last_ddl_time字段只在定义修改时才更新。

有可能吧,不知道是oracle故意这么处理还是怎么的。 ifvlr 2015-04-23 打赏举报 回复 引用 2 楼 binsweet 的回复:那个细节,你关注他有额外用途吗,没有啥的话,不必太关注,无意义

意义嘛确实不大,只是有时候做可以通过这个来查询某张表在什么时候做过修改。然后觉得这个没有和oracle介绍的不符,就过来问一下。。 Tiger_Zhao 2015-04-22 打赏举报 回复 一般DDL语句同时影响对象的定义和存储,truncate特殊在于它只影响存储。

大概last_ddl_time字段只在定义修改时才更新。 binsweet 2015-04-22 打赏举报 回复 那个细节,你关注他有额外用途吗,没有啥的话,不必太关注,无意义 一颗向往数据的心丶 2015-04-22 打赏举报 回复 Truncate个人一直觉得它是DDL,但是具体也没研究过。

顶下。

楼主有详细答案@我 。 小灰狼W 2015-04-22 打赏举报 回复 1. truncate是DDL语句

2. truncate操作以后,last_ddl_time会发生改变

3. last_ddl_time会记录该对象上一次出现ddl操作的时间,甚至包括依托于它的对象的ddl。例如,在该表上创建或删除一个索引也会改变last_ddl_time

针对你说的时间没变,检查

确定进行了truncate操作;

查看的object是否就是你进行过truncate操作的表;

比较下数据库时间和当前实际时间;

要么就是bug

以下情况都会导致last_ddl_time发生改变:

1.When DDL is performed on the dependent objects of the table.

For example when an index is created or altered.

2.When a table is truncated

3.When roles/privileges are granted/revoked.

@z_shousi

2021春招MySQL高频面试题.pdf mysql面试 SQL通用原则 SQL通用的语法规则,有助于T-SQL等语法学习,涵盖SQL语法操作分类等 SQL-DDL语句&DQL语句 SQL-DDL语句&DQL语句 MySQL基础篇3——DDL、DML、DCL使用篇 此笔记来自b站尚硅谷课程,仅做复习使用。

一、创建和管理库1、创建数据库(CREATE DATABASE)2、修改数据库(ALTER DATABASE)3、删除数据库(DROP DATABASE)二、创建和管理表1、创建表(CREATE TABLE)2、修改表( ALTER TABLE)3、重命名表(RENAME TABLE)4、删除表(DROP TABLE)5、清空表(TRUNCATE TABLE)6. DCL 中 COMMIT 和 ROLLBACK三、数据处理之增删改1、添加(INSERT INTO) SQL语法——DDL(附操作讲解)

Oracle 高级技术

3,494

社区成员

18,711

社区内容

发帖 与我相关 我的任务 Oracle 高级技术 Oracle 高级技术相关讨论专区 复制链接

扫一扫 分享 确定 社区描述 Oracle 高级技术相关讨论专区 社区管理员

加入社区

获取链接或二维码

近7日

近30日

至今

加载中

查看更多榜单

社区公告

暂无公告 试试用AI创作助手写篇文章吧

+ 用AI写文章

Copyright © 2088 世界杯乒乓球赛_2014世界杯十佳球 - mz286.com All Rights Reserved.
友情链接