Re: Check constraints and function volatility categories

Поиск
Список
Период
Сортировка
От Adrian Klaver
Тема Re: Check constraints and function volatility categories
Дата
Msg-id 56AFD29C.9030608@aklaver.com
обсуждение исходный текст
Ответ на Re: Check constraints and function volatility categories  ("David G. Johnston" <david.g.johnston@gmail.com>)
Ответы Re: Check constraints and function volatility categories  (Dane Foster <studdugie@gmail.com>)
Список pgsql-general
On 02/01/2016 01:23 PM, David G. Johnston wrote:
> On Mon, Feb 1, 2016 at 2:11 PM, Adrian Klaver <adrian.klaver@aklaver.com
> <mailto:adrian.klaver@aklaver.com>>wrote:
>
>     On 02/01/2016 12:52 PM, Dane Foster wrote:
>
>         On Mon, Feb 1, 2016 at 3:41 PM, Adrian Klaver
>         <adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
>         <mailto:adrian.klaver@aklaver.com
>         <mailto:adrian.klaver@aklaver.com>>> wrote:
>
>
>
>              As an example of where this leads see:
>
>         http://www.postgresql.org/message-id/7224.1452275604@sss.pgh.pa.us
>
>         ​Thanks for the heads up. The good news is all machine access to the
>         data will be via functions and views so I can inline the
>         constraint in
>         the right places. In other news, this sucks! I have no idea what it
>
>
>     I could see moving your constraint into a per row trigger.
>
>
> You'd need to basically replicate the current FK constraint setup but
> with custom queries...you need the insert/update trigger on the main
> table and then a insert/update/delete trigger on the referenced table to
> ensure that actions just rejected if the relevant detail on the main
> table isn't changed.  Then decide whether you need something like "ON
> UPDATE/DELETE CASCADE" instead of the default 'reject' behavior.
>
> I take it you would need to ensure that these triggers are disabled
> during dump/restore but am not certain on that point.

Well this brings up another part to Danes post(that contained the
function definition):

"Unfortunately the "type" definition can't be expressed as a primary key
so I can't use foreign keys to enforce consistency."

Not sure what exactly is meant by "type", though I suspect it is this:
"SELECT type FROM discount_codes WHERE code ..."

FYI, I know type is non-reserved word, but I would avoid using it as a
column name. I went down that path and got myself confused in a hurry:)

In any case it should be pointed out that FKs do not necessarily have to
point to PKs:

http://www.postgresql.org/docs/9.5/interactive/sql-createtable.html

"The referenced columns must be the columns of a non-deferrable unique
or primary key constraint in the referenced table"

>
> David J.
>


--
Adrian Klaver
adrian.klaver@aklaver.com


В списке pgsql-general по дате отправления:

Предыдущее
От: "David G. Johnston"
Дата:
Сообщение: Re: Check constraints and function volatility categories
Следующее
От: Melvin Davidson
Дата:
Сообщение: Re: strange sql behavior