pgsql schema: Introduce `id' and `group_id'

Required to ensure referential integrity when renaming groups.

refs #8826
This commit is contained in:
Johannes Meyer 2015-05-28 15:01:21 +02:00
parent 1950ddcbd6
commit 1c6ded9324
1 changed files with 9 additions and 6 deletions

View File

@ -1,6 +1,7 @@
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */ /* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
CREATE TABLE "icingaweb_group" ( CREATE TABLE "icingaweb_group" (
"id" serial,
"name" character varying(64) NOT NULL, "name" character varying(64) NOT NULL,
"parent" character varying(64) NULL DEFAULT NULL, "parent" character varying(64) NULL DEFAULT NULL,
"ctime" timestamp NULL DEFAULT NULL, "ctime" timestamp NULL DEFAULT NULL,
@ -10,7 +11,7 @@ CREATE TABLE "icingaweb_group" (
ALTER TABLE ONLY "icingaweb_group" ALTER TABLE ONLY "icingaweb_group"
ADD CONSTRAINT pk_icingaweb_group ADD CONSTRAINT pk_icingaweb_group
PRIMARY KEY ( PRIMARY KEY (
"name" "id"
); );
CREATE UNIQUE INDEX idx_icingaweb_group CREATE UNIQUE INDEX idx_icingaweb_group
@ -20,7 +21,7 @@ CREATE UNIQUE INDEX idx_icingaweb_group
); );
CREATE TABLE "icingaweb_group_membership" ( CREATE TABLE "icingaweb_group_membership" (
"group_name" character varying(64) NOT NULL, "group_id" int NOT NULL,
"username" character varying(64) NOT NULL, "username" character varying(64) NOT NULL,
"ctime" timestamp NULL DEFAULT NULL, "ctime" timestamp NULL DEFAULT NULL,
"mtime" timestamp NULL DEFAULT NULL "mtime" timestamp NULL DEFAULT NULL
@ -28,15 +29,17 @@ CREATE TABLE "icingaweb_group_membership" (
ALTER TABLE ONLY "icingaweb_group_membership" ALTER TABLE ONLY "icingaweb_group_membership"
ADD CONSTRAINT pk_icingaweb_group_membership ADD CONSTRAINT pk_icingaweb_group_membership
PRIMARY KEY ( FOREIGN KEY (
"group_name", "group_id"
"username" )
REFERENCES "icingaweb_group" (
"id"
); );
CREATE UNIQUE INDEX idx_icingaweb_group_membership CREATE UNIQUE INDEX idx_icingaweb_group_membership
ON "icingaweb_group_membership" ON "icingaweb_group_membership"
USING btree ( USING btree (
lower((group_name)::text), group_id,
lower((username)::text) lower((username)::text)
); );