CREATE SEQUENCE emp_seq;
CREATE TABLE dept (
deptno NUMERIC(2) CONSTRAINT dept_pk PRIMARY KEY,
dname VARCHAR(20),
loc VARCHAR(20)
);
CREATE TABLE emp(
empno NUMERIC DEFAULT nextval('emp_seq') NOT NULL,
ename VARCHAR(10),
job VARCHAR(20),
mgr NUMERIC(4),
hiredate DATE,
sal NUMERIC(7,2),
comm NUMERIC(7,2),
deptno NUMERIC(2),
CONSTRAINT emp_pk PRIMARY KEY(empno),
FOREIGN KEY (deptno) REFERENCES dept (deptno)
);
CREATE TABLE bonus(
ename VARCHAR(10),
JOB VARCHAR(20),
SAL NUMERIC,
COMM NUMERIC
);
CREATE TABLE project (
projno NUMERIC,
name VARCHAR(100),
CONSTRAINT proj_pk PRIMARY KEY(projno)
);
CREATE TABLE emp_project(
empno NUMERIC,
projno NUMERIC(8,4),
leader VARCHAR(1),
CONSTRAINT emp_proj_pk PRIMARY KEY(empno, projno),
FOREIGN KEY (empno) REFERENCES emp(empno),
FOREIGN KEY (projno) REFERENCES project(projno)
);
CREATE TABLE emp_project_details (
id NUMERIC,
projno NUMERIC(8,4),
empno NUMERIC,
description VARCHAR(100),
CONSTRAINT emp_proj_det_pk PRIMARY KEY(id),
FOREIGN KEY (empno, projno) REFERENCES emp_project(empno, projno)
);
CREATE INDEX emp_project_details_idx ON emp_project_details(description, id);
CREATE INDEX emp_project_details_func ON emp_project_details(COALESCE(description, '1'));
CREATE TABLE seq_generator
(
pk_column text,
value_column int
);
CREATE TABLE lob_test(
id NUMERIC,
name VARCHAR(100) DEFAULT 'doc',
doc_size NUMERIC,
blob_content oid
);
CREATE view emp_view AS SELECT * FROM emp;
CREATE OR REPLACE FUNCTION emp_project_details() RETURNS trigger AS '
BEGIN
RETURN new;
END
' LANGUAGE plpgsql;
CREATE TRIGGER aa_emp_project_details AFTER INSERT OR DELETE OR UPDATE ON emp_project_details
FOR EACH ROW EXECUTE PROCEDURE emp_project_details();
CREATE OR REPLACE FUNCTION test1(OUT var1 character varying, INOUT var2 character varying, IN var3 character varying )
RETURNS record AS
$BODY$
BEGIN
SELECT 10 INTO var1;
var2 := 360;
END;
$BODY$
LANGUAGE 'plpgsql';