【问题标题】:Script create table on UNIX and sqldeveloper are differentUNIX 和 sqldeveloper 上的脚本创建表不同
【发布时间】:2017-08-04 20:46:33
【问题描述】:

如果在 sqldeveloper 命令中,差异是什么
select dbms_metadata.get_ddl('TABLE','table_name','owner') from dual;
给我结果

    CREATE TABLE "OWNER"."TABLE_NAME"    
("HENCD" VARCHAR2(4),    
"HCACT" VARCHAR2(12),    
"HETID" VARCHAR2(30),    
"HERID" VARCHAR2(20),    
"HFNCD" VARCHAR2(1),    
"HPSIN" VARCHAR2(2)   
CONSTRAINT "PK_TRANQ_BPSBATCH" PRIMARY KEY         ("HETID", "HFNCD", "FIRM_CUST_IND")    
 USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS    
 STORAGE(INITIAL 1048576 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645    
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1    
 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)    
 TABLESPACE "DAT01"  ENABLE    
  ) SEGMENT CREATION IMMEDIATE     
 PCTFREE 20 PCTUSED 80 INITRANS 1 MAXTRANS 255     
NOCOMPRESS LOGGING    
 STORAGE(INITIAL 302858240 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645    
 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1    
  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)    
  TABLESPACE "DAT01" "    

但在我看到的实际脚本中:

DROP TABLE table_name
/    


CREATE TABLEtable_name(    
hencd                          VARCHAR2(4),    
hcact                          VARCHAR2(12),    
hetid                          VARCHAR2(20),    
herid                          VARCHAR2(20),    
hfncd                          VARCHAR2(1),
hpsin                          VARCHAR2(1),    )
GRANT SELECT ON tran_queue_bps_batch TO public    
/    
GRANT ALL ON tran_queue_bps_batch TO dtebatch    
/    

-- Indexes for TRAN_QUEUE_BPS_BATCH    
CREATE INDEX indname1 ON table_name (intact_tag, hasdt)     
TABLESPACE idx01    
/    

我必须使用哪一个来删除并重新创建带有附加列的表?

【问题讨论】:

  • DBMS_METADATA 为数据字典中的现有数据库对象生成 DDL 语句。它生成的 SQL 更加规范,因为它无法判断这些值是默认值还是自定义值。其他脚本是手写的。您要使用哪个版本取决于您。
  • 你的意思是如果我使用 UNIX 版本,DBMS_METADATA 会给我 sqldeveloper 的结果?
  • 如果您想做的是添加一列,那么您应该编写一个脚本来执行alter table table_name add new_column number 或其他任何操作。如果不需要,删除和重新创建表是没有意义的。

标签: oracle


【解决方案1】:

“我必须使用哪一个来删除并重新创建带有附加列的表?”

如果您想做的是添加一列,那么您应该编写一个脚本来完成

 alter table table_name add new_column number --- or whatever. 

如果不需要,删除和重新创建表是没有意义的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-25
    • 1970-01-01
    • 2010-11-24
    • 1970-01-01
    相关资源
    最近更新 更多