diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index b74e9c774..0954059dd 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -5966,117 +5966,123 @@ if(!$result = @$db->db_query("SELECT behebung_parameter FROM system.tbl_issue LI
}
// Add table campus.tbl_zeitwunsch_gueltigkeit and migrate initial data
-if(!$result = @$db->db_query("SELECT 1 FROM campus.tbl_zeitwunsch_gueltigkeit LIMIT 1;"))
+if($result = $db->db_query("SELECT EXISTS (SELECT FROM information_schema.tables WHERE table_schema LIKE 'campus' AND table_name = 'tbl_zeitwunsch_gueltigkeit');"))
{
- $qry = "
- CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
- (
- zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
- mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
- von DATE,
- bis DATE,
- insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
- insertvon CHARACTER VARYING(32),
- updateamum TIMESTAMP WITHOUT TIME ZONE,
- updatevon CHARACTER VARYING(32)
- );
-
- CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
- INCREMENT BY 1
- NO MAXVALUE
- NO MINVALUE
- CACHE 1;
-
- -- Add Primary Key
- ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
- ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
-
- -- Add Permissions
- GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
- GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
-
- GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
- GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
+ if ($result == false)
+ {
+ $qry = "
+ CREATE TABLE campus.tbl_zeitwunsch_gueltigkeit
+ (
+ zeitwunsch_gueltigkeit_id INTEGER NOT NULL,
+ mitarbeiter_uid CHARACTER VARYING(32) NOT NULL,
+ von DATE,
+ bis DATE,
+ insertamum TIMESTAMP WITHOUT TIME ZONE DEFAULT NOW(),
+ insertvon CHARACTER VARYING(32),
+ updateamum TIMESTAMP WITHOUT TIME ZONE,
+ updatevon CHARACTER VARYING(32)
+ );
- -- Initial data migration
- INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
- (
- mitarbeiter_uid,
- von,
- bis,
- insertamum,
- insertvon,
- updateamum,
- updatevon
- )
- SELECT * FROM
- (
- -- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
- SELECT DISTINCT mitarbeiter_uid,
- (SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
- NULL::DATE AS \"ende\",
- NOW(),
- 'system',
- NOW(),
- 'system'
- FROM campus.tbl_zeitwunsch
- ORDER BY mitarbeiter_uid
- ) AS init_data
- ";
+ CREATE SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ -- Add Primary Key
+ ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ADD CONSTRAINT pk_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id PRIMARY KEY (zeitwunsch_gueltigkeit_id);
+ ALTER TABLE campus.tbl_zeitwunsch_gueltigkeit ALTER COLUMN zeitwunsch_gueltigkeit_id SET DEFAULT nextval('campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id');
+
+ -- Add Permissions
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO vilesci;
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_gueltigkeit_zeitwunsch_gueltigkeit_id TO web;
+
+ GRANT SELECT, INSERT, UPDATE, DELETE ON campus.tbl_zeitwunsch_gueltigkeit TO vilesci;
+ GRANT SELECT, INSERT, UPDATE ON campus.tbl_zeitwunsch_gueltigkeit TO web;
+
+ -- Initial data migration
+ INSERT INTO campus.tbl_zeitwunsch_gueltigkeit
+ (
+ mitarbeiter_uid,
+ von,
+ bis,
+ insertamum,
+ insertvon,
+ updateamum,
+ updatevon
+ )
+ SELECT * FROM
+ (
+ -- Unique Mitarbeiter from Zeitwunsch Tabelle, Start of actual Studiensemester and open end
+ SELECT DISTINCT mitarbeiter_uid,
+ (SELECT start FROM public.tbl_studiensemester WHERE start <= NOW() AND ende >= NOW()),
+ NULL::DATE AS \"ende\",
+ NOW(),
+ 'system',
+ NOW(),
+ 'system'
+ FROM campus.tbl_zeitwunsch
+ ORDER BY mitarbeiter_uid
+ ) AS init_data
+ ";
- if(!$db->db_query($qry))
- echo 'campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'
';
- else
- echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt
';
+ if(!$db->db_query($qry))
+ echo 'campus.tbl_zeitwunsch_gueltigkeit: '.$db->db_last_error().'
';
+ else
+ echo 'campus.tbl_zeitwunsch_gueltigkeit: Tabelle hinzugefuegt
';
+ }
}
// Add column zeitwunsch_id (as new primary key) and zeitwunsch_gueltigkeit_id to campus.tbl_zeitwunsch
-if (!$result = @$db->db_query("SELECT zeitwunsch_id FROM campus.tbl_zeitwunsch LIMIT 1"))
+if ($result = $db->db_query("SELECT 1 FROM information_schema.columns WHERE table_schema = 'campus' AND table_name = 'tbl_zeitwunsch' AND column_name IN ('zeitwunsch_id', 'zeitwunsch_gueltigkeit_id')"))
{
- $qry = "
- ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
+ if ($db->db_num_rows($result) <> 2)
+ {
+ $qry = "
+ ALTER TABLE campus.tbl_zeitwunsch DROP CONSTRAINT IF EXISTS pk_tbl_zeitwunsch; -- Drop combined pk stunde/mitarbeiter_uid/tag
+
+ -- Add primary key and foreign key
+ ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_id INTEGER;
+ ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN IF NOT EXISTS zeitwunsch_gueltigkeit_id INTEGER;
+
+ -- Add comments
+ COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
+ COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
+
+ CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
+ UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
+
+ ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
+ ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
+
+ -- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
+ UPDATE campus.tbl_zeitwunsch
+ SET zeitwunsch_gueltigkeit_id = (
+ SELECT zeitwunsch_gueltigkeit_id
+ FROM campus.tbl_zeitwunsch_gueltigkeit zwg
+ WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
+ );
+
+ -- Set primary key and foreign key NOT NULL
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
+ ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
+
+ -- Set permissions
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
+ GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
+ ";
- -- Add primary key and foreign key
- ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN zeitwunsch_id INTEGER;
- ALTER TABLE campus.tbl_zeitwunsch ADD COLUMN zeitwunsch_gueltigkeit_id INTEGER;
-
- -- Add comments
- COMMENT ON COLUMN campus.tbl_zeitwunsch.zeitwunsch_gueltigkeit_id IS 'Ordnet die Zeitwuensche einer Gueltigkeitsdauer von-bis zu';
- COMMENT ON COLUMN campus.tbl_zeitwunsch.mitarbeiter_uid IS 'DEPRECATED';
-
- CREATE SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id
- INCREMENT BY 1
- NO MAXVALUE
- NO MINVALUE
- CACHE 1;
-
- ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET DEFAULT nextval('campus.seq_zeitwunsch_zeitwunsch_id');
- UPDATE campus.tbl_zeitwunsch SET zeitwunsch_id = nextval('campus.seq_zeitwunsch_zeitwunsch_id');
-
- ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT pk_zeitwunsch_zeitwunsch_id PRIMARY KEY (zeitwunsch_id);
- ALTER TABLE campus.tbl_zeitwunsch ADD CONSTRAINT fk_zeitwunsch_zeitwunsch_gueltigkeit_id FOREIGN KEY (zeitwunsch_gueltigkeit_id) REFERENCES campus.tbl_zeitwunsch_gueltigkeit(zeitwunsch_gueltigkeit_id) ON DELETE RESTRICT ON UPDATE CASCADE;
-
- -- Set initial zeitwunsch_gueltigkeit_id values to Gueltigkeitszeitraum of actual Studiensemester
- UPDATE campus.tbl_zeitwunsch
- SET zeitwunsch_gueltigkeit_id = (
- SELECT zeitwunsch_gueltigkeit_id
- FROM campus.tbl_zeitwunsch_gueltigkeit zwg
- WHERE tbl_zeitwunsch.mitarbeiter_uid = zwg.mitarbeiter_uid
- );
-
- -- Set primary key and foreign key NOT NULL
- ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_id SET NOT NULL;
- ALTER TABLE campus.tbl_zeitwunsch ALTER COLUMN zeitwunsch_gueltigkeit_id SET NOT NULL;
-
- -- Set permissions
- GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO vilesci;
- GRANT SELECT, UPDATE ON SEQUENCE campus.seq_zeitwunsch_zeitwunsch_id TO web;
- ";
-
- if(!$db->db_query($qry))
- echo 'campus.tbl_zeitwunsch: '.$db->db_last_error().'
';
- else
- echo '
campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
+ if (!$db->db_query($qry))
+ echo 'campus.tbl_zeitwunsch: ' . $db->db_last_error() . '
';
+ else
+ echo '
campus.tbl_zeitwunsch: Neue Spalte zeitwunsch_id hinzugefuegt.';
+ }
}
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen