Hello, I'm in the process of developing a basic database structure that utilizes inheritance as part of a test for my work. The database consists of two tables: ‘PERSON' and ‘CUSTOMER' with the ‘PERSON' table serving as the parent table for ‘CUSTOMER' .
Initially, I defined the 'CREATE TABLE' statement as follows:
With these ‘INSERTS’, we have three records, as expected:
The problem occurs when we try add the ‘Fulano’ as a customer:
The 'CUSTOMER' table look like this:
However, this issue arises in the 'PERSON' table:
The primary key is duplicated when I attempted to add 'Fulano' as a customer.
After that, I attempted a slightly different approach in creating the ‘CUSTOMER’ table, as I'll show below:
But, when I run the same ‘INSERTS’ above, the same problem occurs with the ‘PERSON’ table:
I would like to know where I might be going wrong with these simple queries, and reinforce that my main question is: how to create a record for a ‘CUSTOMER’ who already exists in the ‘PERSON’ table?
A question that arose was to see that in the 'PERSON' table, there was a duplication of the record with the same 'id', considering that 'id' is a primary key.
I'm particularly interested in the advantages of the inheritance concept in PostgreSQL, considering that it can be easily applied to my business rules. I'd also like to know if inheritance is commonly used. Any insights and recommendations would be appreciated. Thank you.
My environment:
Oracle Linux Server 8.8
Postgres 15.4
This test was also performed in this environment:
Windows 10 Pro
Postgres 16