CREATE DOMAIN "BooleanField" AS smallint CHECK (VALUE IN (0,1)); CREATE DOMAIN "NullBooleanField" AS smallint CHECK ((VALUE IN (0,1)) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveIntegerField" AS integer CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveSmallIntegerField" AS smallint CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "TextField" AS varchar(10921); CREATE TABLE "books_publisher" ( "id" integer NOT NULL PRIMARY KEY, "name" varchar(30) NOT NULL, "address" varchar(50) NOT NULL, "city" varchar(60) NOT NULL, "state_province" varchar(30) NOT NULL, "country" varchar(50) NOT NULL, "website" varchar(200) NOT NULL ); CREATE GENERATOR BOOKS_PUBLISHER$G; CREATE TRIGGER BOOKS_PUBLISHER$T FOR "books_publisher" ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF ((NEW."id" IS NULL) OR (NEW."id" = 0)) THEN BEGIN NEW."id" = GEN_ID(BOOKS_PUBLISHER$G, 1); END END; DECLARE EXTERNAL FUNCTION RAND RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; CREATE DOMAIN "BooleanField" AS smallint CHECK (VALUE IN (0,1)); CREATE DOMAIN "NullBooleanField" AS smallint CHECK ((VALUE IN (0,1)) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveIntegerField" AS integer CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveSmallIntegerField" AS smallint CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "TextField" AS varchar(10921); CREATE TABLE "books_book" ( "id" integer NOT NULL PRIMARY KEY, "title" varchar(100) NOT NULL, "publisher_id" integer NOT NULL, "publication_date" date NOT NULL ); CREATE GENERATOR BOOKS_BOOK$G; CREATE TRIGGER BOOKS_BOOK$T FOR "books_book" ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF ((NEW."id" IS NULL) OR (NEW."id" = 0)) THEN BEGIN NEW."id" = GEN_ID(BOOKS_BOOK$G, 1); END END; DECLARE EXTERNAL FUNCTION RAND RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; ALTER TABLE "books_book" ADD CONSTRAINT PUBLISHER_ID$ID$4CDC253FC5B2768 FOREIGN KEY ("publisher_id") REFERENCES "books_publisher" ("id"); CREATE DOMAIN "BooleanField" AS smallint CHECK (VALUE IN (0,1)); CREATE DOMAIN "NullBooleanField" AS smallint CHECK ((VALUE IN (0,1)) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveIntegerField" AS integer CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "PositiveSmallIntegerField" AS smallint CHECK ((VALUE >= 0) OR (VALUE IS NULL)); CREATE DOMAIN "TextField" AS varchar(10921); CREATE TABLE "books_author" ( "id" integer NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(40) NOT NULL, "email" varchar(75) NOT NULL ); CREATE GENERATOR BOOKS_AUTHOR$G; CREATE TRIGGER BOOKS_AUTHOR$T FOR "books_author" ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF ((NEW."id" IS NULL) OR (NEW."id" = 0)) THEN BEGIN NEW."id" = GEN_ID(BOOKS_AUTHOR$G, 1); END END; DECLARE EXTERNAL FUNCTION RAND RETURNS DOUBLE PRECISION BY VALUE ENTRY_POINT 'IB_UDF_rand' MODULE_NAME 'ib_udf'; CREATE TABLE "books_book_authors" ( "id" integer NOT NULL PRIMARY KEY, "book_id" integer NOT NULL, "author_id" integer NOT NULL, UNIQUE ("book_id", "author_id") ); CREATE GENERATOR BOOKS_BOOK_AUTHORS$G; CREATE TRIGGER BOOKS_BOOK_AUTHORS$T FOR "books_book_authors" ACTIVE BEFORE INSERT POSITION 0 AS BEGIN IF ((NEW."id" IS NULL) OR (NEW."id" = 0)) THEN BEGIN NEW."id" = GEN_ID(BOOKS_BOOK_AUTHORS$G, 1); END END; ALTER TABLE "books_book_authors" ADD CONSTRAINT BOOK_ID$ID$5565DDFCFBCF262 FOREIGN KEY ("book_id") REFERENCES "books_book" ("id")ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE "books_book_authors" ADD CONSTRAINT AUTHOR_ID$ID$1F0E145E09E7E386 FOREIGN KEY ("author_id") REFERENCES "books_author" ("id")ON DELETE CASCADE ON UPDATE CASCADE; CREATE INDEX "books_book_publisher_id" ON "books_book" ("publisher_id"); COMMIT;