<p>There is another option to do it directly in db_postgres constraints "auto detection"</p>
<p><a href="https://www.postgresql.org/docs/9.1/static/catalog-pg-constraint.html">https://www.postgresql.org/docs/9.1/static/catalog-pg-constraint.html</a></p>
<p>We would search the catalog :</p>
<pre><code>select conntype from pg_constraint where conrelid = (select oid from pg_class where relname like 'location_test') and contype = u;
select conntype from pg_constraint where conrelid = (select oid from pg_class where relname like 'location_test') and contype = p;
</code></pre>
<p>wich would return : <code>location_ruid_idx_test</code> or <code>location_test_pkey</code></p>
<p>Then we can save this in the module memory :</p>
<pre><code class="language-struct"> char *db_name;
 char *db_table;
 char *unique_contraint;  
 char *primary_key_constraint;
};
</code></pre>
<p>And use it automatically in the next queries ...</p>
<pre><code class="language-insert"></code></pre>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/kamailio/kamailio/pull/1039#issuecomment-287967115">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AF36ZT4bg6aIYjK15W5H35fE7sFmzjGpks5rn0S4gaJpZM4Mhjex">mute the thread</a>.<img alt="" height="1" src="https://github.com/notifications/beacon/AF36ZT6-laRVU5hQbrGLbrisGGLfhOQaks5rn0S4gaJpZM4Mhjex.gif" width="1" /></p>
<div itemscope itemtype="http://schema.org/EmailMessage">
<div itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
  <link itemprop="url" href="https://github.com/kamailio/kamailio/pull/1039#issuecomment-287967115"></link>
  <meta itemprop="name" content="View Pull Request"></meta>
</div>
<meta itemprop="description" content="View this Pull Request on GitHub"></meta>
</div>

<script type="application/json" data-scope="inboxmarkup">{"api_version":"1.0","publisher":{"api_key":"05dde50f1d1a384dd78767c55493e4bb","name":"GitHub"},"entity":{"external_key":"github/kamailio/kamailio","title":"kamailio/kamailio","subtitle":"GitHub repository","main_image_url":"https://cloud.githubusercontent.com/assets/143418/17495839/a5054eac-5d88-11e6-95fc-7290892c7bb5.png","avatar_image_url":"https://cloud.githubusercontent.com/assets/143418/15842166/7c72db34-2c0b-11e6-9aed-b52498112777.png","action":{"name":"Open in GitHub","url":"https://github.com/kamailio/kamailio"}},"updates":{"snippets":[{"icon":"PERSON","message":"@jchavanton in #1039: There is another option to do it directly in db_postgres constraints \"auto detection\"\r\n\r\nhttps://www.postgresql.org/docs/9.1/static/catalog-pg-constraint.html\r\n\r\nWe would search the catalog :\r\n```\r\nselect conntype from pg_constraint where conrelid = (select oid from pg_class where relname like 'location_test') and contype = u;\r\nselect conntype from pg_constraint where conrelid = (select oid from pg_class where relname like 'location_test') and contype = p;\r\n```\r\nwich would return : `location_ruid_idx_test` or `location_test_pkey`\r\n\r\nThen we can save this in the module memory :\r\n```struct constraint {\r\n char *db_name;\r\n char *db_table;\r\n char *unique_contraint;  \r\n char *primary_key_constraint;\r\n};\r\n```\r\nAnd use it automatically in the next queries ...\r\n```insert into location_test (ruid, username, domain) values ('1234','jo', 'my dom') on conflict on constraint location_ruid_idx_test do update set ruid='1234', username='jo', domain='my dom';\r\n```"}],"action":{"name":"View Pull Request","url":"https://github.com/kamailio/kamailio/pull/1039#issuecomment-287967115"}}}</script>