Hi Michael,
I fixed this yesterday in commit r225174 by adding UNIQUE NOT NULL
constraints to the referenced fields.
-- Michelle
Michael Watzek wrote:
Hi Michelle,
the "ALTER TABLE" statements below fail for datastore identity because
there is no unique key on the referenced columns:
[java] ij> ALTER TABLE project_reviewer
[java] ADD CONSTRAINT PR_PROJ_FK FOREIGN KEY
[java] (PROJID) REFERENCES projects(PROJID);
[java] ERROR X0Y44: Constraint 'PR_PROJ_FK' is invalid: there is
no unique or primary key constraint on table 'DATAS
TOREIDENTITY3.PROJECTS' that matches the number and types of the
columns in the foreign key.
[java] ij> ALTER TABLE project_reviewer
[java] ADD CONSTRAINT PR_REV_FK FOREIGN KEY
[java] (REVIEWER) REFERENCES persons(PERSONID);
[java] ERROR X0Y44: Constraint 'PR_REV_FK' is invalid: there is no
unique or primary key constraint on table 'DATAST
OREIDENTITY3.PERSONS' that matches the number and types of the columns
in the foreign key.
I suggest to reference column "DATASTORE_IDENTITY" in both statements
instead.
Regards,
Michael
Hi Michelle,
I just noticed that the foreign key names in the "ALTER TABLE"
statements below are used in the orm meta data. For this reason, I
suggest to keep the "ALTER TABLE" statements and instead drop the
REFERENCE clauses in the column defintions below.
Regards,
Michael
Hi Michelle,
the TCK schemas for application identity and datastore indentity
both contain two "ALTER TABLE" statements on table
"project_reviewer". I think, both statements are redundant, because
in the "CREATE TABLE" statement of table "project_reviewer" column
"PROJID" as well as column "REVIEWER" have "REFERENCE" clauses already:
CREATE TABLE project_reviewer (
PROJID INTEGER REFERENCES projects NOT NULL,
REVIEWER INTEGER REFERENCES persons NOT NULL
);
ALTER TABLE project_reviewer
ADD CONSTRAINT PR_PROJ_FK FOREIGN KEY
(PROJID) REFERENCES projects(PROJID);
ALTER TABLE project_reviewer
ADD CONSTRAINT PR_REV_FK FOREIGN KEY
(REVIEWER) REFERENCES persons(PERSONID);
For this reason, I suggest to delete both "ALTER TABLE" statements.
Regards,
Michael