我对SQL比较陌生,只有在需要时才会涉足它。我已经做了一些研究,但成功有限。我需要从代码中删除表空间引用。数据库中的设置已经存在于默认表空间中。顺便说一下,它是一个Oracle数据库。从数据库脚本中删除表空间引用
如果我有几行代码:
EXECUTE IMMEDIATE 'CREATE TABLE RAND_CATEGORY(
-------- insert random vars ---------------
CONSTRAINT RAND_CATEGORY PRIMARY KEY(cat_id,ver_num)
USING INDEX TABLESPACE VG_NDX ENABLE
)TABLESPACE VG_DATA';
这是我到目前为止有:
EXECUTE IMMEDIATE 'CREATE TABLE RAND_CATEGORY(
-------- insert random vars ---------------
CONSTRAINT RAND_CATEGORY PRIMARY KEY(cat_id,ver_num)
USING INDEX TABLESPACE VG_NDX ENABLE
)';
我的问题是,我应该删除整条生产线:
USING INDEX TABLESPACE VG_NDX ENABLE
或者我应该删除“TABLESPACE VG_NDX”并将其保留为:
USING INDEX ENABLE
请记住,我是新手,我只是需要帮助。过去两周我一直在学习SQL,表空间对我来说有点时髦。提前致谢! :D
谢谢!我最终问了我们的DBA,他说要把所有东西都拿出来,但是留下ENABLE。我不确定原因。可能它已经默认启用了,但也许他们只是想让程序员更容易理解正在发生的事情。我不确定推理。 所以我改变了 使用INDEX TABLESPACE VG_NDX ENABLE '到 ENABLE – minhaz1 2012-07-31 20:54:01
'ENABLE'不是'USING INDEX'的一部分。 'ENABLE'和'USING INDEX'都是'constraint_state'的一部分,显示在http://docs.oracle.com/cd/E11882_01/server.112/e26088/clauses002.htm#CJADJGEC。查看'constraint_state'的铁路图,可以看到约束的'ENABLE'选项是独立的。 'using_index_clause'允许定制由约束创建或使用的索引。 http://docs.oracle.com/cd/E11882_01/server.112/e26088/clauses002.htm#CJAGEBIG – 2012-07-31 22:50:52
@ minhaz1:你不应该接受不正确的答案〜 @ShannonSeverance:感谢您的纠正,尽管我仍然没有看到保持'ENABLE'的意义。我在文档中找不到它,但是测试它清楚地表明,在CREATE TABLE语句中声明一个'PRIMARY KEY CONSTRAINT'可以在默认情况下启用它。不管它是数据库设置,还是它是固定的,无论如何,为什么在这种情况下指定'ENABLE'? – Paciv 2012-08-01 10:29:49