mariuz (owner)

Revisions

  • 9e4286 mariuz Thu Mar 19 11:16:03 -0700 2009
gist: 81981 Download_button fork
public
Public Clone URL: git://gist.github.com/81981.git
Embed All Files: show embed
books.sql #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
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;