Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inheritance/extends of database TABLEs [CORE5581] #5848

Open
firebird-automations opened this issue Jul 13, 2017 · 2 comments
Open

Inheritance/extends of database TABLEs [CORE5581] #5848

firebird-automations opened this issue Jul 13, 2017 · 2 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: PEAKTOP (peaktop)

Votes: 4

I want to use in DDL SQL the next construction

CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

CREATE TABLE MY_TABLE2(
FIELD1 VARCHAR(50)
)EXTENDS MY_TABLE1 ON (
...<WHERE CLAUSE>...
);
COMMIT;

after executing this construction I want to have in database two tables:
MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
MY_TABLE2 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
,FIELD1 VARCHAR(50)
);

MY_TABLE2 contains all records from MY_TABLE1 "INNER JOIN"ed with "MY_TABLE2.FIELD1" on <WHERE CLAUSE>.

----------
At now I can to improve this feature with next steps:

1) CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

2) CREATE TABLE MY_TABLE2_TMP(
TABLE1_ID INTEGER NOT NULL PRIMARY KEY
,FIELD1 VARCHAR(50)
,CONSTRAINT FK_MY_TABLE2_TMP_ID FOREIGN KEY (TABLE1_ID)
REFERENCES MY_TABLE1 (ID) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_MY_TABLE2_TMP_ID
);
COMMIT;

3) CREATE VIEW MY_TABLE2 AS(
SELECT http://T1.ID, http://T1.NAME, T2.FIELD1
FROM MY_TABLE2 T2 INNER JOIN MY_TABLE1 T1 ON ( ...<WHERE CLAUSE>... )
);
COMMIT;

But when I had to change internal structure of MY_TABLE1 (for example, I had to add domain), I should to recompile view MY_TABLE2 because it doesn't knows about new added domain.

@firebird-automations
Copy link
Collaborator Author

Modified by: PEAKTOP (peaktop)

security: Developers [ 10012 ] =>

@firebird-automations
Copy link
Collaborator Author

Modified by: PEAKTOP (peaktop)

description: I want to use in DDL SQL the next construction

CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

CREATE TABLE MY_TABLE2(
FIELD1 VARCHAR(50)
)EXTENDS MY_TABLE1 ON (
...<WHERE CLAUSE>...
);
COMMIT;

after executing this construction I want to have in database two tables:
MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
MY_TABLE2 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
,FIELD1 VARCHAR(50)
);

MY_TABLE2 contains all records from MY_TABLE1 "INNER JOIN"ed with "MY_TABLE2.FIELD1" on <WHERE CLAUSE>.

----------
At now I can to improve this feature with next steps:

1) CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

2) CREATE TABLE MY_TABLE2_TMP(
TABLE1_ID INTEGER NOT NULL PRIMARY KEY
,FIELD1 VARCHAR(50)
,CONSTRAINT FK_MY_TABLE2_TMP_ID FOREIGN KEY (TABLE1_ID)
REFERENCES MY_TABLE1 (ID) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_MY_TABLE2_TMP_ID
);
COMMIT;

3) CREATE VIEW MY_TABLE2 AS(
SELECT http://T1.ID, http://T1.NAME, T2.FIELD1
FROM MY_TABLE1 T1 INNER JOIN MY_TABLE2 T2 ON ( ...<WHERE CLAUSE>... )
);
COMMIT;

But when I had to change internal structure of MY_TABLE1 (for example, I had to add domain), I should to recompile view MY_TABLE2 because it doesn't knows about new added domain.

=>

I want to use in DDL SQL the next construction

CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

CREATE TABLE MY_TABLE2(
FIELD1 VARCHAR(50)
)EXTENDS MY_TABLE1 ON (
...<WHERE CLAUSE>...
);
COMMIT;

after executing this construction I want to have in database two tables:
MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
MY_TABLE2 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
,FIELD1 VARCHAR(50)
);

MY_TABLE2 contains all records from MY_TABLE1 "INNER JOIN"ed with "MY_TABLE2.FIELD1" on <WHERE CLAUSE>.

----------
At now I can to improve this feature with next steps:

1) CREATE TABLE MY_TABLE1 (
ID INTEGER NOT NULL PRIMARY KEY
,NAME VARCHAR(255)
);
COMMIT;

2) CREATE TABLE MY_TABLE2_TMP(
TABLE1_ID INTEGER NOT NULL PRIMARY KEY
,FIELD1 VARCHAR(50)
,CONSTRAINT FK_MY_TABLE2_TMP_ID FOREIGN KEY (TABLE1_ID)
REFERENCES MY_TABLE1 (ID) ON DELETE CASCADE ON UPDATE CASCADE USING INDEX FK_MY_TABLE2_TMP_ID
);
COMMIT;

3) CREATE VIEW MY_TABLE2 AS(
SELECT http://T1.ID, http://T1.NAME, T2.FIELD1
FROM MY_TABLE2 T2 INNER JOIN MY_TABLE1 T1 ON ( ...<WHERE CLAUSE>... )
);
COMMIT;

But when I had to change internal structure of MY_TABLE1 (for example, I had to add domain), I should to recompile view MY_TABLE2 because it doesn't knows about new added domain.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant