Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWLdI-0007iz-FM for pgsql-novice@arkaria.postgresql.org; Tue, 13 Apr 2021 16:11:20 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lWLdH-0000Ey-4B for pgsql-novice@arkaria.postgresql.org; Tue, 13 Apr 2021 16:11:19 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWLdG-0000Er-Uh for pgsql-novice@lists.postgresql.org; Tue, 13 Apr 2021 16:11:18 +0000 Received: from mout.gmx.net ([212.227.15.19]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lWLdF-0005MN-46 for pgsql-novice@lists.postgresql.org; Tue, 13 Apr 2021 16:11:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=badeba3b8450; t=1618330275; bh=VR/7iI3Mb631/IAGnhvc4T9Z/SIr4u/cPY7OuwazE6I=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:In-Reply-To:References; b=SbB7mGGDtMC+iHtPgKcpvygdByyS0y4HrXGLSPUj3uW9CdcAomvuXzgubdGvxvwK2 pAA9YiY20r1JpLChQ4TLp5ZZK7feciT99Shy79BumcNI1lqKOKhNAC8Z1aFR5HBZW1 iqMPjsMydT3HuXecyKmc+NNTluRD3YGG9tkZDxaY= X-UI-Sender-Class: 01bb95c1-4bf8-414a-932a-4f6e2808ef9c Received: from mail.defcon1.lan ([93.15.31.113]) by mail.gmx.net (mrgmx004 [212.227.17.184]) with ESMTPSA (Nemesis) id 1N7i8O-1lb8ld1s0Y-014kc0; Tue, 13 Apr 2021 18:11:15 +0200 Date: Tue, 13 Apr 2021 18:11:13 +0200 From: Bzzzz To: pgsql-novice@lists.postgresql.org Cc: steve@tusol.co.uk Subject: Re: Advice on foreign key and cascading delete design - postgresql 12.6 Message-ID: <20210413181113.77f7ba46@msi.defcon1.lan> In-Reply-To: References: <3190280.1618325238@sss.pgh.pa.us> Organization: Anyone, anywhere but in banana demokratik republik of france or UERSS. Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:B00j8niR5Ok6ks6oJZjQCa82P9AoAvMFac9JsCqI3AK5BwK/I46 NYtozVPUSQTbDJzgRYTOs+JMGqzVQQQv6YjP1ywYTzKYMw2RLlt7b7WRNbd51fpUF9UgqUr g9l49UNu31qx6MzQKvwGd3ON+sKz22S2J+O9wNhyRhn+2R7GcJKUc67/c3XOBwsSsWjcfF/ moYjq780rfz4wOHtY8BOQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:A6/tSmpdtN0=:QPsnhMiEA6EF5p8LnWM+7k q2z3oKFZHwfdWUX3ivXy+yo65LuubuWW61GfosKc6VvO38r7vPmAismnLfeA9EqS0Ic1oo3ja Mnnh1uzNT9VpMM1DU2J8blm7zH2ViFdh9HgK+v34niKSkDb6IA2Um2VVyXXLfbj/PmvaDLUwr 3PJMccsrjkBap7jTNRM9u+B0fdLZc4erkz9FagQGVu5nAWL0BYoPM2AJU7pzcZ/JgAKJDlGvV vf5oKI8z6SolD4AIrQsFgenWZQFUd6br5OfX/t1X5ZQDUmKJI3mSYDCEGaJIVfWglz+3foN6J hIX0UIU9NDnjn+E/amtoizEwR55wZBNEeMgOPLVRon2sMX7e1v7mB76dFqIsqzi85hQkzU5eD nZpats/p/ani8tnOuE2u/9exyGL8Mw4xFVf3xhwoLVpIpfxSHKgKW4u4v41v2EP6HaFpgAz+Y XdENWtOx7hxSXFI5sI2w13a7W5qdFAiHZAQ1/bFLf1/B1s8vTM655oVMjGStQdrsVZHTqewFg /LMZoCEubrHDOQEsIaqPtCAN85L4oNQFCwEW+XHETlERfunSfjtDGybu8hyCX2SISzI+1VOGS Z6806hbIDarTAOCgeONVKI6NFxlKDMC+JieNWRy8qkJBUhV574ZjJB9ly85zkJ6wbFdb1ViCM QfVwwce/qvK8/5D1BL6+FbgWMDSA3oM4cbSMKl2tJedMmOkMsIARgUIpDE6p0fdIAP+jpibpg KmtL575a4WgJEAy0Oy6LDu8boQ4WrDTvhcwz65QorafbKjGGj9TEhaAc6YJMmk8Ef2M7LKBLg 9dJpkEpCM1KPg2IHCw2tzwJQwuzAyf/w6xyz4oQQaLrYOpgU55s6K/CZjZLObI5BdUDrAyOy9 1M2vOWuqMDvU3I3Q2Xby5OixWYraIUbPtaAEIhEFPgtQLqhUDIxUeG+d19dmDPdzFqNYzgvKv FO6VkgpNPKkmz4larn+c7CnbkyyownELsxJoGgwOFY4LZ+g0Psy9T6V4367yZVHhDeqtdpy2j xHFGna2jfyuRVbcZBnjg+qnh73K2MjUGp/hBL9XCzX8PS/ccN6oBomxHW8UYK8lC8VEmSNGtV LYhUEYnF4+aC0Hdbf6J/pHuMYplOqTbcRxBtg6Z6XW4UWU0O5Fh6QfuhEI9UVhTCfadvJHSmw 36jMb35V4PCrpelXCTwqxOKTDlZPmMkd8rJzxn5FY2gDkb/j1vtgyAEA0ygFDwUkBSIYY= List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Tue, 13 Apr 2021 16:48:48 +0100 "Steve Tucknott (TuSol)" wrote: > > Maybe I'm missing something, but aren't you just looking for theON > > DELETE CASCADE option of foreign key constraints? > > regards, tom lane > > Tom, > Maybe it's me that's missing it. > > On my subordinate table I have two 'identification' fields - one > containing a varchar for the table name and the other a value for the > PK for that table. So if I add a 'note' on my notes table for my > suppliers table record 1, I would have an entry on notes with > ...'suppliers', 1, 'some note text'... > . > ..and on my supplier table a record with PK of 1. So supplier PK 1 has > a note of 'some note text'. > > How do I set up the FK on the notes table? All I can see is the option > to link on column names, so I can set up: > ...CONSTRAINT notes_c1 FOREIGN KEY (foreignRecNo) REFERENCES supplier > ... > > BUT that doesn't work as far as I can see, as I may have multiple > foreignrecnos on notes with value 1, each of which is dependent on the > foreigntablename as well - but I cannot see how to specify a literal in > the FK constraint. What I think I need is something like: > ...CONSTRAINT notes_c1 FOREIGN KEY (foreigntablename,foreignRecNo) > REFERENCES supplier ('supplier',recno) ... Whoops, it should of course read : REFERENCES public.main(id) ON DELETE CASCADE my bad, sorry. Jean-Yves