Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 红移:截断表(如果存在)_Sql_Amazon Redshift_Truncate_Drop Table - Fatal编程技术网

Sql 红移:截断表(如果存在)

Sql 红移:截断表(如果存在),sql,amazon-redshift,truncate,drop-table,Sql,Amazon Redshift,Truncate,Drop Table,使用TRUNCATE TABLE而不是DELETE。但是,truncate table不支持IF EXISTS子句。另一种方法是删除表并重新创建,但需要DDL。如果只有表存在,是否有方法执行截断表?您有两个选项来实现它: SQL过程/脚本 使用IF条件,检查表是否存在,然后只截断表。 使用普通SQL语句 使用Create表和如果不存在以及Truncate,这将确保表始终存在&您的连续SQL语句不会出错并停止 CREATE TABLE @tobetruncated IF NOT EXISTS T

使用
TRUNCATE TABLE
而不是
DELETE
。但是,truncate table不支持
IF EXISTS
子句。另一种方法是
删除表
并重新创建,但需要DDL。如果只有表存在,是否有方法执行
截断表?

您有两个选项来实现它:

SQL过程/脚本
使用
IF
条件,检查表是否存在,然后只截断表。

使用普通SQL语句
使用
Create
表和
如果不存在
以及
Truncate
,这将确保表始终存在&您的连续SQL语句不会出错并停止

CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated
注意:这并不特定于REDSHFIT,主要适用于所有DB,除非它支持特殊功能(比如我知道Oracle有一个
表\u EXISTS\u ACTION
)。Truncate就像一个全有或全无操作,这使得它的性能比DELETE好得多


我对红移一无所知,但我想看看SQL中的try-catch-end-catch…即使运行
TRUNCATE
,也会产生错误,您对它有什么问题吗?或者这会阻止脚本运行吗?另外,为什么您认为该表可能不存在?如果它不存在,你无论如何也不能用它做任何事情,所以你的脚本也会失败!