95 lines
1.9 KiB
SQL
95 lines
1.9 KiB
SQL
-- sample data to test Firebird system tables
|
|
|
|
-- TABLE TEST
|
|
CREATE TABLE TEST1 (
|
|
TEST_NAME CHAR(30) CHARACTER SET NONE NOT NULL COLLATE NONE,
|
|
TEST_ID INTEGER DEFAULT '0' NOT NULL,
|
|
TEST_DATE TIMESTAMP NOT NULL
|
|
);
|
|
ALTER TABLE TEST1 ADD CONSTRAINT PK_TEST PRIMARY KEY (TEST_ID);
|
|
|
|
-- TABLE TEST2 with some CONSTRAINTs and an INDEX
|
|
CREATE TABLE TEST2 (
|
|
ID INTEGER NOT NULL,
|
|
FIELD1 INTEGER,
|
|
FIELD2 CHAR(15) CHARACTER SET NONE COLLATE NONE,
|
|
FIELD3 VARCHAR(50) CHARACTER SET NONE COLLATE NONE,
|
|
FIELD4 INTEGER,
|
|
FIELD5 INTEGER,
|
|
ID2 INTEGER NOT NULL
|
|
);
|
|
ALTER TABLE TEST2 ADD PRIMARY KEY (ID2);
|
|
CREATE UNIQUE INDEX TEST2_FIELD1ID_IDX ON TEST2(ID, FIELD1);
|
|
CREATE UNIQUE INDEX TEST2_FIELD4_IDX ON TEST2(FIELD4);
|
|
CREATE INDEX TEST2_FIELD5_IDX ON TEST2(FIELD5);
|
|
|
|
-- TABLE NUMBERS
|
|
CREATE TABLE NUMBERS (
|
|
NUMBER INTEGER DEFAULT '0' NOT NULL,
|
|
EN CHAR(100) CHARACTER SET ISO8859_1 NOT NULL COLLATE ISO8859_1,
|
|
FR CHAR(100) CHARACTER SET ISO8859_1 NOT NULL COLLATE ISO8859_1
|
|
);
|
|
|
|
-- TABLE NEWTABLE
|
|
CREATE TABLE NEWTABLE (
|
|
ID INT DEFAULT 0 NOT NULL,
|
|
SOMENAME VARCHAR (12),
|
|
SOMEDESCRIPTION VARCHAR (12)
|
|
);
|
|
ALTER TABLE NEWTABLE ADD CONSTRAINT PKINDEX_IDX PRIMARY KEY (ID);
|
|
CREATE GENERATOR NEWTABLE_SEQ;
|
|
|
|
-- VIEW on TEST
|
|
CREATE VIEW "testview"(
|
|
TEST_NAME,
|
|
TEST_ID,
|
|
TEST_DATE
|
|
) AS
|
|
SELECT *
|
|
FROM TEST1
|
|
WHERE TEST_NAME LIKE 't%';
|
|
|
|
-- VIEW on NUMBERS
|
|
CREATE VIEW "numbersview"(
|
|
NUM,
|
|
EN,
|
|
FR
|
|
) AS
|
|
SELECT *
|
|
FROM NUMBERS
|
|
WHERE NUMBER > 100;
|
|
|
|
-- TRIGGER on NEWTABLE (emulate autoincrement)
|
|
SET TERM ^ ;
|
|
|
|
CREATE TRIGGER AUTOINCREMENTPK FOR NEWTABLE
|
|
ACTIVE BEFORE INSERT POSITION 0
|
|
AS BEGIN
|
|
IF (NEW.ID IS NULL OR NEW.ID = 0) THEN
|
|
NEW.ID = GEN_ID(NEWTABLE_SEQ, 1);
|
|
END^
|
|
|
|
SET TERM ; ^
|
|
|
|
-- SAMPLE STORED PROCEDURE
|
|
SET TERM ^ ;
|
|
|
|
CREATE PROCEDURE getEnglishNumber(N INTEGER)
|
|
RETURNS (
|
|
english_number CHAR(100)
|
|
)
|
|
AS
|
|
BEGIN
|
|
FOR
|
|
SELECT EN
|
|
FROM NUMBERS
|
|
WHERE NUMBER = :N
|
|
INTO :english_number
|
|
DO
|
|
BEGIN
|
|
SUSPEND;
|
|
END
|
|
END ^
|
|
|
|
SET TERM ; ^
|