使用TRUNCATE TABLE
代替DELETE
是recommended。但是,截断表不支持IF EXISTS
子句。替代方法是DROP TABLE
并重新创建,但需要DDL。如果仅存在表,有没有办法做TRUNCATE TABLE
?
答案 0 :(得分:2)
您有两种选择可以实现:
SQL过程/脚本
使用IF
条件,检查表是否存在,然后仅截断表。
使用普通SQL语句
将Create
表与if not exists
与Truncate
结合使用,这将确保该表始终存在,并且您连续的SQL语句不会出错并停止。
CREATE TABLE @tobetruncated IF NOT EXISTS
TRUNCATE TABLE @tobetruncated
注意:这并非特定于REDSHFIT,除非它支持特殊功能(例如我知道Oracle具有
TABLE_EXISTS_ACTION
的功能),否则它大部分适用于所有DB。截断就像一个全有或全无的操作,这就是使它比DELETE更好的性能。