doc-exports/docs/dws/dev/dws_06_0176.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

130 lines
19 KiB
HTML

<a name="EN-US_TOPIC_0000001188110566"></a><a name="EN-US_TOPIC_0000001188110566"></a>
<h1 class="topictitle1">CREATE SYNONYM</h1>
<div id="body1578896975701"><div class="section" id="EN-US_TOPIC_0000001188110566__sf337ecb5bde84580afed94be7bbf5fb9"><h4 class="sectiontitle">Function</h4><p id="EN-US_TOPIC_0000001188110566__p1479251195413"><strong id="EN-US_TOPIC_0000001188110566__b1531111214316">CREATE SYNONYM</strong> is used to create a synonym object. A synonym is an alias of a database object and is used to record the mapping between database object names. You can use synonyms to access associated database objects.</p>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110566__section93413620440"><h4 class="sectiontitle">Precautions</h4><ul id="EN-US_TOPIC_0000001188110566__ul10234635104412"><li id="EN-US_TOPIC_0000001188110566__li158597016496">The user of a synonym should be its owner.</li><li id="EN-US_TOPIC_0000001188110566__li2393131774711">If the schema name is specified, create a synonym in the specified schema. Otherwise create a synonym in the current schema.</li><li id="EN-US_TOPIC_0000001188110566__li82251056114919">Database objects that can be accessed using synonyms include tables, views, functions, and stored procedures.</li><li id="EN-US_TOPIC_0000001188110566__li16827289513">To use synonyms, you must have the required permissions on associated objects.</li><li id="EN-US_TOPIC_0000001188110566__li1643774675120">The following DML statements support synonyms: <strong id="EN-US_TOPIC_0000001188110566__b2045944519718">SELECT</strong>, <strong id="EN-US_TOPIC_0000001188110566__b1753013483710">INSERT</strong>, <strong id="EN-US_TOPIC_0000001188110566__b1132051774">UPDATE</strong>, <strong id="EN-US_TOPIC_0000001188110566__b6103145518716">DELETE</strong>, <strong id="EN-US_TOPIC_0000001188110566__b2786135713715">EXPLAIN</strong>, and <strong id="EN-US_TOPIC_0000001188110566__b17584501984">CALL</strong>.</li><li id="EN-US_TOPIC_0000001188110566__li6548114401417">The <strong id="EN-US_TOPIC_0000001188110566__b6664124016710">CREATE SYNONYM</strong> statement of an associated function or stored procedure cannot be used in a stored procedure. You are advised to use synonyms existing in the <strong id="EN-US_TOPIC_0000001188110566__b1228715301185">pg_synonym</strong> system catalog in the stored procedure.</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110566__s432427bf362e4684b4559ac16cfcda57"><h4 class="sectiontitle">Syntax</h4><div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__s18d476418c7748ada6302a1c75028d5d"><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="p">[</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="p">]</span><span class="w"> </span><span class="n">SYNONYM</span><span class="w"> </span><span class="n">synonym_name</span><span class="w"> </span>
<span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">object_name</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110566__section1549681213574"><h4 class="sectiontitle">Parameter Description</h4><ul id="EN-US_TOPIC_0000001188110566__ul849711245713"><li id="EN-US_TOPIC_0000001188110566__li11885054185912"><strong id="EN-US_TOPIC_0000001188110566__b614481895914">synonym</strong><p id="EN-US_TOPIC_0000001188110566__p836651861419">Name of a synonym which is created (optionally with schema names)</p>
<p id="EN-US_TOPIC_0000001188110566__p967943011145">Value range: a string. It must comply with the identifier naming rules.</p>
</li><li id="EN-US_TOPIC_0000001188110566__li18542153412134"><strong id="EN-US_TOPIC_0000001188110566__b1872512405564">object_name</strong><p id="EN-US_TOPIC_0000001188110566__p571312461613">Name of an object that is associated (optionally with schema names)</p>
<p id="EN-US_TOPIC_0000001188110566__p734282114167">Value range: a string. It must comply with the identifier naming rules.</p>
<div class="note" id="EN-US_TOPIC_0000001188110566__note82872047173219"><img src="public_sys-resources/note_3.0-en-us.png"><span class="notetitle"> </span><div class="notebody"><p id="EN-US_TOPIC_0000001188110566__p152876474329"><strong id="EN-US_TOPIC_0000001188110566__b15102172114148">object_name</strong> can be the name of an object that does not exist.</p>
</div></div>
</li></ul>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110566__section1853433744413"><h4 class="sectiontitle">Examples</h4><p id="EN-US_TOPIC_0000001188110566__p2061510425426">Create schemas <strong id="EN-US_TOPIC_0000001188110566__b927414109418">ot</strong> and <strong id="EN-US_TOPIC_0000001188110566__b6558558164711">tpcds</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen1883184511444"><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">SCHEMA</span><span class="w"> </span><span class="n">ot</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">SCHEMA</span><span class="w"> </span><span class="n">tpcds</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p5615144254217">Create table <strong id="EN-US_TOPIC_0000001188110566__b436121474114">ot.t1</strong> and its synonym <strong id="EN-US_TOPIC_0000001188110566__b1636711424117">t1</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen5324145344418"><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">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">(</span><span class="n">id</span><span class="w"> </span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="n">name</span><span class="w"> </span><span class="n">varchar2</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span><span class="w"> </span><span class="n">DISTRIBUTE</span><span class="w"> </span><span class="k">BY</span><span class="w"> </span><span class="n">hash</span><span class="p">(</span><span class="n">id</span><span class="p">);</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="n">SYNONYM</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p9615242144218">Use synonym <strong id="EN-US_TOPIC_0000001188110566__b16923192117415">t1</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen751814596440"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">t1</span><span class="p">;</span>
<span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s1">'ada'</span><span class="p">),</span><span class="w"> </span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s1">'bob'</span><span class="p">);</span>
<span class="k">UPDATE</span><span class="w"> </span><span class="n">t1</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'cici'</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">t1</span><span class="p">.</span><span class="n">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">2</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p36141642104211">Create synonym <strong id="EN-US_TOPIC_0000001188110566__b963102614115">v1</strong> and its associated view <strong id="EN-US_TOPIC_0000001188110566__b106432674115">ot.v_t1</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen964414710457"><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="n">SYNONYM</span><span class="w"> </span><span class="n">v1</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">v_t1</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">VIEW</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">v_t1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p0614142194218">Use synonym <strong id="EN-US_TOPIC_0000001188110566__b18502182994116">v1</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen1646131313451"><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">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">v1</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p861434234218">Create overloaded function <strong id="EN-US_TOPIC_0000001188110566__b117353484119">ot.add</strong> and its synonym <strong id="EN-US_TOPIC_0000001188110566__b12173143419411">add</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen034992104510"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">integer</span><span class="p">)</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="nb">integer</span><span class="w"> </span><span class="k">AS</span>
<span class="err">$$</span>
<span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span>
<span class="err">$$</span>
<span class="k">LANGUAGE</span><span class="w"> </span><span class="k">sql</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">(</span><span class="n">a</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">b</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">))</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="nb">decimal</span><span class="p">(</span><span class="mi">5</span><span class="p">,</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span>
<span class="err">$$</span>
<span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span>
<span class="err">$$</span>
<span class="k">LANGUAGE</span><span class="w"> </span><span class="k">sql</span><span class="p">;</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="n">SYNONYM</span><span class="w"> </span><span class="k">add</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="k">add</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p10613184215427">Use synonym <strong id="EN-US_TOPIC_0000001188110566__b6965143974113">add</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen19609122912450"><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">SELECT</span><span class="w"> </span><span class="k">add</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span>
<span class="k">SELECT</span><span class="w"> </span><span class="k">add</span><span class="p">(</span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="p">,</span><span class="mi">2</span><span class="p">.</span><span class="mi">3</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p1161264234214">Create stored procedure <strong id="EN-US_TOPIC_0000001188110566__b1840394394112">ot.register</strong> and its synonym <strong id="EN-US_TOPIC_0000001188110566__b4403194313413">register</strong>:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen171643814511"><div class="highlight"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span>
<span class="normal">3</span>
<span class="normal">4</span>
<span class="normal">5</span>
<span class="normal">6</span>
<span class="normal">7</span>
<span class="normal">8</span>
<span class="normal">9</span></pre></div></td><td class="code"><div><pre><span></span><span class="k">CREATE</span><span class="w"> </span><span class="k">PROCEDURE</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">register</span><span class="p">(</span><span class="n">n_id</span><span class="w"> </span><span class="nb">integer</span><span class="p">,</span><span class="w"> </span><span class="n">n_name</span><span class="w"> </span><span class="n">varchar2</span><span class="p">(</span><span class="mi">10</span><span class="p">))</span>
<span class="k">SECURITY</span><span class="w"> </span><span class="k">INVOKER</span>
<span class="k">AS</span>
<span class="k">BEGIN</span>
<span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">t1</span><span class="w"> </span><span class="k">VALUES</span><span class="p">(</span><span class="n">n_id</span><span class="p">,</span><span class="w"> </span><span class="n">n_name</span><span class="p">);</span>
<span class="k">END</span><span class="p">;</span>
<span class="o">/</span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="n">SYNONYM</span><span class="w"> </span><span class="n">register</span><span class="w"> </span><span class="k">FOR</span><span class="w"> </span><span class="n">ot</span><span class="p">.</span><span class="n">register</span><span class="p">;</span>
</pre></div></td></tr></table></div>
</div>
<p id="EN-US_TOPIC_0000001188110566__p360954274216">Use synonym <strong id="EN-US_TOPIC_0000001188110566__b514110471413">register</strong> to invoke the stored procedure:</p>
<div class="codecoloring" codetype="Sql" id="EN-US_TOPIC_0000001188110566__screen134411442453"><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">CALL</span><span class="w"> </span><span class="n">register</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="s1">'mia'</span><span class="p">);</span>
</pre></div></td></tr></table></div>
</div>
</div>
<div class="section" id="EN-US_TOPIC_0000001188110566__s7408f0450b9b4dc7948c069376053290"><h4 class="sectiontitle">Helpful Links</h4><p id="EN-US_TOPIC_0000001188110566__en-us_topic_0059778825_p749627459"><a href="dws_06_0140.html">ALTER SYNONYM</a>, <a href="dws_06_0207.html">DROP SYNONYM</a></p>
</div>
</div>
<div>
<div class="familylinks">
<div class="parentlink"><strong>Parent topic:</strong> <a href="dws_06_0118.html">DDL Syntax</a></div>
</div>
</div>