use*_*117 4 sql create-table teradata drop-table
我正在处理一个请求,我必须创建一个表来插入一些数据.所以,显然我将首先拥有一个删除表.在创建st之前 但是当我第一次运行它时(在创建表之前),它会弹出一个错误,表示没有创建表,然后从这里创建表和goe son.所以每次第一次运行我的代码时,它都会在drop table st中弹出这个错误.有没有人有更好的主意?
像"如果表存在然后删除其他创建表"之类的东西
我不知道我们将如何在sql中执行此操作
删除表table_name; -------------->这里它第一次抛出错误表示表不存在.
创建表table_name
{等等};
顺便说一句,我正在研究Teradata,但简单的SQL逻辑会有所帮助.
Rob*_*ler 10
您可以创建SYSDBA或有足够的其他管理员级别的用户拥有一个存储过程DROP TABLE,并CREATE TABLE认为做以下特权:
CREATE TABLE <TargetDB>.<TargetTable> AS <SourceDB>.<SourceTable> WITH DATA AND STATS;您可以通过接受有关是否应将数据和/或统计信息复制到新表的其他参数来使其更具动态性.
如果你正在使用BTEQ,你可以做类似的事情(BTEQ命令语法可能有点偏,但足够接近以获得重点):
SELECT 1
FROM DBC.TABLES
WHERE DatabaseName = '<TargetDB>'
AND TableName = '<TargetTable>'
AND TableKind = 'T' /* Make sure it is in fact a table, not a view, macro etc */
.IF ACIVITYCOUNT = 0 THEN GOTO CreateNewTable;
DROP TABLE <TargetDB>.<TargetTable>;
.IF ERRORCODE = 3807 THEN GOTO CreateNewTable; /* Table dropped by another process? */
.IF ERRORCODE > 0 THEN .QUIT ERRORCODE; /* Unexpected error */
.LABEL CreateNewTable;
CREATE <TargetDB>.<TargetTable> AS <SourceDB>.<SourceTable> WITH DATA AND STATISTICS;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40195 次 |
| 最近记录: |