/**************************************************************************************/
/* File:        demo12                                                                */
/* Project:     ATSQL2 : Referential integrity                                        */
/* Author:      Andreas Steiner                                                       */
/* Date:        04-09-1995                                                            */
/* Results:                                                                           */
/**************************************************************************************/

SET CLOCK TO TIMESTAMP '1995';

CREATE TABLE p(i integer) AS VALID;

INSERT INTO p VALUES (9999);

COMMIT;


CREATE TABLE q(i integer REFERENCES p(i)) AS VALID;

INSERT INTO q VALUES (9999);
INSERT INTO q VALUES (8888);

COMMIT;

/*
Error(s) found checking referential integrity * q.i references p.i *
Rollback
*/

VALID SELECT * FROM q;

/*
Error: table or view  * q * does not exist
*/


VALID SELECT * FROM p;

/*
                                        VALID               i
 -------------------------------------------- ---------------
                             [1995 - forever)            9999
*/



CREATE TABLE q(i integer REFERENCES p(i)) AS VALID;

INSERT INTO q VALUES (9999);

VALID SELECT * FROM q;

/*
                                        VALID               i
 -------------------------------------------- ---------------
                             [1995 - forever)            9999
*/

COMMIT;

/*
Commit complete
*/


CREATE TABLE s(i integer REFERENCES q(i), name CHAR(20)) AS VALID AND TRANSACTION;

INSERT INTO s VALUES (8888, 'andreas');

SET CLOCK TO TIMESTAMP '1995/6';

VALID AND TRANSACTION SELECT * FROM s;

COMMIT;

/*
Error(s) found checking referential integrity * s.i references q.i *
Rollback
*/


CREATE TABLE s(i integer REFERENCES q(i), name CHAR(20)) AS VALID AND TRANSACTION;

INSERT INTO s VALUES (9999, 'andreas');

SET CLOCK TO TIMESTAMP '1995/6';

VALID AND TRANSACTION SELECT * FROM s;

COMMIT;

/*
Commit complete
*/

VALID AND TRANSACTION SELECT * FROM s;


DROP TABLE s;
DROP TABLE q;
DROP TABLE p;

REMOVE CLOCK;
