~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to userdb/users.sql

  • Committer: William Grant
  • Date: 2009-03-25 05:41:15 UTC
  • mto: (1165.3.1 submissions)
  • mto: This revision was merged to the branch mainline in revision 1174.
  • Revision ID: grantw@unimelb.edu.au-20090325054115-r20cd821jhln02ku
Add NOT NULL name and short_name columns to project.

short_name must be unique over the entire offering.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
 
62
62
CREATE TABLE project (
63
63
    projectid   SERIAL PRIMARY KEY NOT NULL,
64
 
    synopsis    VARCHAR,
65
 
    url         VARCHAR,
 
64
    short_name  TEXT NOT NULL,
 
65
    name        TEXT NOT NULL,
 
66
    synopsis    TEXT,
 
67
    url         TEXT,
66
68
    projectsetid  INTEGER REFERENCES project_set (projectsetid) NOT NULL,
67
69
    deadline    TIMESTAMP
68
70
);
69
71
 
 
72
CREATE OR REPLACE FUNCTION check_project_namespacing_insertupdate()
 
73
RETURNS trigger AS '
 
74
    DECLARE
 
75
        oid INTEGER;
 
76
    BEGIN
 
77
        IF TG_OP = ''UPDATE'' THEN
 
78
            IF NEW.projectsetid = OLD.projectsetid AND NEW.short_name = OLD.short_name THEN
 
79
                RETURN NEW;
 
80
            END IF;
 
81
        END IF;
 
82
        SELECT offeringid INTO oid FROM project_set WHERE project_set.projectsetid = NEW.projectsetid;
 
83
        PERFORM 1 FROM project, project_set
 
84
        WHERE project_set.offeringid = oid AND
 
85
              project.projectsetid = project_set.projectsetid AND
 
86
              project.short_name = NEW.short_name;
 
87
        IF found THEN
 
88
            RAISE EXCEPTION ''a project named % already exists in offering ID %'', NEW.short_name, oid;
 
89
        END IF;
 
90
        RETURN NEW;
 
91
    END;
 
92
' LANGUAGE 'plpgsql';
 
93
 
 
94
CREATE TRIGGER check_project_namespacing
 
95
    BEFORE INSERT OR UPDATE ON project
 
96
    FOR EACH ROW EXECUTE PROCEDURE check_project_namespacing_insertupdate();
 
97
 
70
98
CREATE TABLE project_group (
71
99
    groupnm     VARCHAR NOT NULL,
72
100
    groupid     SERIAL PRIMARY KEY NOT NULL,