Skip to content

Instantly share code, notes, and snippets.

@mariuz
Created March 19, 2009 18:34
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mariuz/81991 to your computer and use it in GitHub Desktop.
Save mariuz/81991 to your computer and use it in GitHub Desktop.
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;
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;
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;
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;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment