PostgreSQL TRUNCATE
在本节中,我们将了解
PostgreSQL TRUNCATE TABLE 命令如何从大型表中快速删除所有记录的工作。
要删除表中的所有数据,请使用 DELETE命令。当一个表包含很多记录并且也没有用时,在这种情况下,我们将使用
TRUNCATE TABLE 命令从特定表中删除所有记录。
truncate命令的语法
TRUNCATE TABLE命令的基本语法如下:
TRUNCATE TABLE table_name;
[ RESTART IDENTITY | continue IDENTITY ] [ CASCADE | RESTRICT ]
在以上语法中,我们具有以下参数:
参数 |
说明 |
CASCADE |
此选项会自动截断所有表,其中包含对其他表的外键引用,或者由于CASCADE而添加到集合中的任何表。 |
RESTART IDENTITY |
它反复重新启动被截断表的列所拥有的订单。 |
CONTINUE IDENTITY |
它不会更改订单的值,它是默认选项。 |
RESTRICT |
这也是默认选项,如果其他表包含表的外键引用(命令中未提及),则该选项可以截断。 |
注意: TRUNCATE TABLE命令从表中删除所有记录而不检查它,它比DELETE命令快。
在 PostgreSQL 中,我们可以通过两种方式执行截断表:
PostgreSQL使用pgAdmin截断表
PostgreSQL使用SQL Shell(PSQL
PostgreSQL使用pgAdmin截断表
要使用
pgAdmin 中的
truncate table命令删除表,我们将执行以下步骤:
第1步
打开您的
pgAdmin ,然后进入
对象树转到数据库的位置,移至
方案下的
public 部分,然后选择所需的特定表
(student_info)来
截断。
数据库→lidihuo→Schema→public→表→student_info
第2步
然后,我们将右键单击所选的(student_info)表,并单击"截断"选项,然后从给定的下拉列表中再次选择"截断"选项,如下面的屏幕截图所示:
步骤3
截断表弹出窗口将出现在屏幕上,我们将点击
OK 按钮以截断
student_info 表。
第4步
一旦单击
OK 按钮,该表将被删除自动,如下面的屏幕截图所示,
表部分中没有可用的表。
PostgreSQL使用SQL Shell(PSQL)截断表
使用
truncate table命令删除表在
psql 中,我们将执行以下步骤:
步骤1
打开
SQL shell(psql),其中显示了
必要的详细信息。之后,我们将使用在PostgreSQL的安装过程中创建的
密码,
登录到Postgres数据库服务器。
我们已连接到我们在下面的屏幕快照中看到了
Postgres服务器:
第2步
现在,我们将使用以下命令连接到我们先前创建的特定数据库服务器,即
lidihuo 。 :
第3步
最后,我们将执行truncate table命令以删除特定表。
psql中PostgreSQL截断表的示例
要了解PostgreSQL截断表在实际环境中的工作,时间,我们将看到以下示例:
删除一个表中的所有数据
在下面的示例中,要删除
student_information 表,我们使用TRUNCATE TABLE命令:
truncate table student_information;
输出
执行上述命令后,我们将获得以下输出,表示
student_information 表数据已成功删除。
以下命令用于重置借助
RESTART IDENTITY 选项
在特定列中输入值:
TRUNCATE TABLE table_name
RESTART IDENTITY;
让我们看一个
示例示例,在这里我们尝试重置特定列的值。
以下命令从
student_information
表,并返回与
stu_name 列相关的顺序:
TRUNCATE TABLE student_information
RESTART IDENTITY;
输出
执行上述命令后,我们将获得以下输出,该输出表示
student_information 表记录已成功删除
基本上,以上命令不会重新启动与
student_information 表中的列相关的顺序,因为
Truncate table 命令默认使用
CONTINUE IDENTITY 选项。
删除多个表中的所有记录
如果要同时截断一个或多个表中的所有记录,我们可以在
逗号(,)的帮助下将每个表分开。
语法
以下语法用于
删除来自多个表的所有数据:
TRUNCATE TABLE table_name1, table_name2 ...;
例如
以下命令用于删除
个人 和
department 表格:
TRUNCATE TABLE persons, department;
输出
执行上述命令后,我们将获得以下输出,其中显示
人员和department 表数据已成功删除。
删除具有外键引用的表中的所有记录
如果我们需要频繁截断包含其他表的外键引用的表,而该表未在TRUNCATE TABLE命令中列出。
默认情况下,
TRUNCATE TABLE 命令不会从具有外键引用的表中删除任何记录。
因此,在这种情况下,我们将使用
TRUNCATE TABLE 命令中的CASCADE 选项可用于删除表和其他表中的记录,其中包含外键引用。
语法 >
删除的基本语法带有外键引用的表中的所有记录如下:
TRUNCATE TABLE table_name
CASCADE;
例如
在以下示例中,我们将从
employee 表和其他表中删除数据通过外键约束引用
persons 表的人:
TRUNCATE TABLE employee CASCADE;
输出
执行上述命令后,我们将获得以下输出,其中
employee 表数据已成功删除。
CASCADE选项带有附加思想,或者如果我们想从不需要的表中删除记录。
TRUNCATE TABLE 命令使用
RESTRICT 该选项可避免我们截断该表,该表默认情况下具有外键约束引用。
PostgreSQL截断表和事务
如果我们在其中使用了truncate table命令事务,我们可以安全地回滚它,因为它是事务安全的。
PostgreSQL TRUNCATE TABLE和ON DELETE触发器
如果将触发器应用于TRUNCATE对于一个表使用的TABLE命令,我们必须指定Truncate/Afte之前r截断该特定表的触发器。
TRUNCATE TABLE 命令删除表中的所有记录,并且在删除触发器时不使用任何与表格链接的选项。
概述
要从大表中删除所有记录,我们可以使用 TRUNCATE TABLE 命令。
如果一个表通过外键约束引用另一个表,我们可以使用 CASCADE选项截断一个表和其他表。
truncate table命令使用 truncate之前/之后触发器,而不是使用 Delete触发器。