productions.sql 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. CREATE TYPE vote.type_production AS ENUM('EXECUTABLE', 'GRAPHE', 'MUSIQUE', 'VIDEO', 'TOPIC', 'AUTRE');
  2. CREATE CAST (varchar AS vote.type_production) WITH INOUT AS IMPLICIT;
  3. CREATE TABLE IF NOT EXISTS vote.productions
  4. (
  5. date_creation timestamp without time zone NOT NULL DEFAULT now(),
  6. date_modification timestamp without time zone,
  7. numero_production integer NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
  8. flag_actif boolean DEFAULT true,
  9. numero_participant integer NOT NULL,
  10. adresse_ip inet NOT NULL,
  11. type vote.type_production DEFAULT 'AUTRE',
  12. titre character varying(256) COLLATE pg_catalog."default" NOT NULL DEFAULT 'unknown compo entry name',
  13. auteurs character varying(256) COLLATE pg_catalog."default" NOT NULL DEFAULT 'unknown author(s)',
  14. groupes character varying(256) COLLATE pg_catalog."default" NOT NULL DEFAULT 'unknown group(s)',
  15. plateforme character varying(128) COLLATE pg_catalog."default" NULL DEFAULT '',
  16. commentaire text,
  17. informations_privees text,
  18. nom_archive character varying(256) COLLATE pg_catalog."default" NOT NULL,
  19. archive bytea,
  20. vignette bytea,
  21. numero_version integer DEFAULT 1,
  22. CONSTRAINT fk_numeroParticipantProduction FOREIGN KEY(numero_participant) REFERENCES vote.participants(numero_participant)
  23. )
  24. TABLESPACE vote;
  25. ALTER TABLE IF EXISTS vote.productions OWNER to vote;
  26. CREATE INDEX IF NOT EXISTS ix_numeroParticipantProduction ON vote.productions USING btree (numero_participant) TABLESPACE vote;
  27. CREATE FUNCTION vote.dateModificationProduction() RETURNS TRIGGER AS $$
  28. BEGIN
  29. NEW.date_modification = now();
  30. return NEW;
  31. END;
  32. $$ LANGUAGE 'plpgsql';
  33. ALTER FUNCTION vote.dateModificationProduction() OWNER TO vote;
  34. CREATE OR REPLACE TRIGGER dateModificationProduction BEFORE UPDATE ON vote.productions FOR EACH ROW EXECUTE FUNCTION vote.dateModificationProduction();