doc-exports/docs/dws/dev/dws_04_1036.html
Lu, Huayi e6fa411af0 DWS DEV 830.201 version
Reviewed-by: Pruthi, Vineet <vineet.pruthi@t-systems.com>
Co-authored-by: Lu, Huayi <luhuayi@huawei.com>
Co-committed-by: Lu, Huayi <luhuayi@huawei.com>
2024-05-16 07:24:04 +00:00

61 lines
14 KiB
HTML

<a name="EN-US_TOPIC_0000001856238633"></a><a name="EN-US_TOPIC_0000001856238633"></a>
<h1 class="topictitle1">ALTER TABLE</h1>
<div id="body8662426"><div class="section" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_sc38eadebc8e74e1e8200bca116ca55ef"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p578531383418">Modify a table, including modifying the definition of a table, renaming a table, renaming a specified column in a table, adding or updating multiple columns, and changing a column-store table to an HStore table.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_s382c620cdede4a91ba5d429f091c14c9"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_u83811bebe7004526bcd5b0d5cb5278d2"><li id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_li1740362915347">You can set <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b20519852141015">enable_hstore</strong> by using <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b1427135283211">ALTER</strong> to change a column-store table to an HStore table, or to change it back. If <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b182591248171315">enable_delta</strong> is set to <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b152931852151318">on</strong>, <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b176181153111313">enable_hstore</strong> cannot be set to <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b161229553137">on</strong>.</li><li id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_li5475153618345">For some ALTER operations (such as modifying column types, merging partitions, adding NOT NULL constraints, and adding primary key constraints), HStore tables need to merge data to the primary table and then perform ALTER, which may cause extra performance overhead. The impact on performance depends on the data volume in the delta table.</li><li id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_li080193304815">When you add a column, do not use <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b167132511185">ALTER</strong> to specify other operations (for example, modifying the column type). An <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b157811934203">ALTER</strong> statement with only the <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b1529741982016">ADD COLUMN</strong> parameter can achieve high performance, because it does not require FULL MERGE.</li><li id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_li4247114513342">The storage parameter <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b1649713492113">ORIENTATION</strong> cannot be modified.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_s0568dfe900e948eaa67d0a335c26701c"><h4 class="sectiontitle">Modifying Table Attributes</h4><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p4584158101215">Syntax:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen13584125891217"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">&lt;</span><span class="k">table_name</span><span class="o">&gt;</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="p">(</span><span class="w"> </span><span class="err">{</span><span class="n">ENABLE_HSTORE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">ON</span><span class="err">}</span><span class="w"> </span><span class="p">[,</span><span class="w"> </span><span class="p">...</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p116641837127">To change a column-store table to an HStore table, run the following command:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen181417518382"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="k">WITH</span><span class="p">(</span><span class="n">ORIENTATION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">COLUMN</span><span class="p">);</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="p">(</span><span class="n">ENABLE_HSTORE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">ON</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="notice" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_n951a3aaaf9ea4965971145ac8008132e"><span class="noticetitle"><img src="public_sys-resources/notice_3.0-en-us.png"> </span><div class="noticebody"><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p181164934111">To use HStore tables, set the following parameters, or the HStore performance will deteriorate severely. The recommended settings are as follows:</p>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p81178984113"><strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b20100172217240">autovacuum_max_workers_hstore=3, autovacuum_max_workers=6, autovacuum=true</strong></p>
</div></div>
<div class="section" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_section202371211573"><h4 class="sectiontitle">Adding a Column</h4><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p1553019419110">Syntax:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen18367201914119"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">&lt;</span><span class="k">table_name</span><span class="o">&gt;</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="o">&lt;</span><span class="n">new_column</span><span class="o">&gt;</span><span class="w"> </span><span class="o">&lt;</span><span class="n">data_type</span><span class="o">&gt;</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">DEFAULT</span><span class="w"> </span><span class="o">&lt;</span><span class="n">default_value</span><span class="o">&gt;</span><span class="p">];</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p48181288118">Example:</p>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p1345715191217">Create the <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b173652048132415">alter_test2</strong> table and add a column to it.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen1093974513149"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test2</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="k">WITH</span><span class="p">(</span><span class="n">ORIENTATION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">COLUMN</span><span class="p">,</span><span class="n">ENABLE_HSTORE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">ON</span><span class="p">);</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test</span><span class="w"> </span><span class="k">ADD</span><span class="w"> </span><span class="k">COLUMN</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="nb">int</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<div class="note" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_note106255245139"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p1662532415137">When adding a column, you are not advised to use <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b254751617251">ALTER</strong> to specify other operations in the same SQL statement.</p>
</div></div>
</div>
<div class="section" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_section9184441205711"><h4 class="sectiontitle">Renaming</h4><p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p10135171091317">Syntax:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen3135171015139"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="p">[</span><span class="w"> </span><span class="k">IF</span><span class="w"> </span><span class="k">EXISTS</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="o">&lt;</span><span class="k">table_name</span><span class="o">&gt;</span><span class="w"> </span><span class="k">RENAME</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="o">&lt;</span><span class="n">new_table_name</span><span class="o">&gt;</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p1367711111310">Example:</p>
<p id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_p947520484108">Create table <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b162991852132512">alter_test3</strong> and rename it as <strong id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_b81231855192512">alter_new</strong>.</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001856238633__en-us_topic_0000001442638228_screen10788337183"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test3</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="k">WITH</span><span class="p">(</span><span class="n">ORIENTATION</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">COLUMN</span><span class="p">,</span><span class="n">ENABLE_HSTORE</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">ON</span><span class="p">);</span>
<span class="k">ALTER</span><span class="w"> </span><span class="k">TABLE</span><span class="w"> </span><span class="n">alter_test3</span><span class="w"> </span><span class="k">RENAME</span><span class="w"> </span><span class="k">TO</span><span class="w"> </span><span class="n">alter_new</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_04_1026.html">Hybrid Data Warehouse Syntax</a></div>
</div>
</div>