diff --git a/system/dbupdate_3.4.php b/system/dbupdate_3.4.php
index bc8152a90..dcf882c43 100644
--- a/system/dbupdate_3.4.php
+++ b/system/dbupdate_3.4.php
@@ -32,6 +32,7 @@ require_once('dbupdate_3.4/26173_index_webservicelog.php');
require_once('dbupdate_3.4/24682_reihungstest_zugangscode_fuer_login.php');
require_once('dbupdate_3.4/17512_fehlercode_constraints.php');
require_once('dbupdate_3.4/19154_beurteilungsformulare_pruefungssenat.php');
+require_once('dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php');
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '
Pruefe Tabellen und Attribute!
';
diff --git a/system/dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php b/system/dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php
new file mode 100644
index 000000000..a7d415b68
--- /dev/null
+++ b/system/dbupdate_3.4/21620_neues_feld_zum_erfassen_des_ESI.php
@@ -0,0 +1,116 @@
+db_query('SELECT 0 FROM public.tbl_kennzeichentyp WHERE 0 = 1'))
+{
+ $qry = 'CREATE TABLE public.tbl_kennzeichentyp (
+ kennzeichentyp_kurzbz varchar(32) NOT NULL,
+ bezeichnung varchar(256) NOT NULL,
+ aktiv boolean NOT NULL DEFAULT TRUE
+ );
+
+ COMMENT ON TABLE public.tbl_kennzeichentyp IS \'Tabelle zur Verwaltung von Typen von externen Personenkennzeichen.\';
+ COMMENT ON COLUMN public.tbl_kennzeichentyp.bezeichnung IS \'Voller Name des Kennzeichentyps.\';
+ COMMENT ON COLUMN public.tbl_kennzeichentyp.aktiv IS \'Ob der Kennzeichentyp noch aktiv und verwendet wird.\';
+
+ ALTER TABLE public.tbl_kennzeichentyp ADD CONSTRAINT pk_tbl_kennzeichentyp PRIMARY KEY (kennzeichentyp_kurzbz)';
+
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichentyp: '.$db->db_last_error().'
';
+ else
+ echo '
public.tbl_kennzeichentyp table created';
+
+ $qry = 'GRANT SELECT ON TABLE public.tbl_kennzeichentyp TO web;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichentyp: '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to web on public.tbl_kennzeichentyp';
+
+ $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichentyp TO vilesci;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichentyp: '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to vilesci on public.tbl_kennzeichentyp';
+}
+
+// SEQUENCE tbl_kennzeichen_id_seq
+if ($result = $db->db_query("SELECT 0 FROM pg_class WHERE relname = 'tbl_kennzeichen_id_seq'"))
+{
+ if ($db->db_num_rows($result) == 0)
+ {
+ $qry = 'CREATE SEQUENCE public.tbl_kennzeichen_id_seq
+ START WITH 1
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;';
+
+ if(!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen_id_seq '.$db->db_last_error().'
';
+ else
+ echo '
Created sequence: public.tbl_kennzeichen_id_seq';
+
+ // GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO vilesci;
+ $qry = 'GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO vilesci;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen_id_seq '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to vilesci on public.tbl_kennzeichen_id_seq';
+
+ // GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO fhcomplete;
+ $qry = 'GRANT SELECT, UPDATE ON SEQUENCE public.tbl_kennzeichen_id_seq TO fhcomplete;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen_id_seq '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to fhcomplete on public.tbl_kennzeichen_id_seq';
+ }
+}
+
+// Creates table public.tbl_kennzeichen if it doesn't exist and grants privileges
+if (!$result = @$db->db_query('SELECT 0 FROM public.tbl_kennzeichen WHERE 0 = 1'))
+{
+ $qry = 'CREATE TABLE public.tbl_kennzeichen (
+ kennzeichen_id integer NOT NULL DEFAULT NEXTVAL(\'public.tbl_kennzeichen_id_seq\'),
+ person_id integer NOT NULL,
+ kennzeichentyp_kurzbz varchar(32) NOT NULL,
+ inhalt text NOT NULL,
+ aktiv boolean NOT NULL DEFAULT TRUE,
+ insertamum timestamp DEFAULT NOW(),
+ insertvon varchar(32),
+ updateamum timestamp,
+ updatevon varchar(32)
+ );
+
+ COMMENT ON TABLE public.tbl_kennzeichen IS \'Tabelle zum Speichern von externen Personenkennzeichen.\';
+ COMMENT ON COLUMN public.tbl_kennzeichen.kennzeichentyp_kurzbz IS \'Typ des externen Personen Kennzeichens.\';
+ COMMENT ON COLUMN public.tbl_kennzeichen.inhalt IS \'Das externe Kennzeichen.\';
+ COMMENT ON COLUMN public.tbl_kennzeichen.aktiv IS \'Ob das Kennzeichen noch aktiv ist und verwendet wird.\';
+
+ ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT pk_tbl_kennzeichen PRIMARY KEY (kennzeichen_id);
+
+ ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT fk_kennzeichen_person FOREIGN KEY (person_id) REFERENCES public.tbl_person(person_id) ON UPDATE CASCADE ON DELETE RESTRICT;
+ ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT fk_kennzeichen_kennzeichentyp_kurzbz FOREIGN KEY (kennzeichentyp_kurzbz) REFERENCES public.tbl_kennzeichentyp(kennzeichentyp_kurzbz) ON UPDATE CASCADE ON DELETE RESTRICT;
+
+ -- create unique constraint, no person can have the same kennzeichen twice
+ ALTER TABLE public.tbl_kennzeichen ADD CONSTRAINT uk_kennzeichen_person_id_inhalt UNIQUE (person_id, kennzeichentyp_kurzbz, inhalt);
+ -- create unique index - person can only have one active kennzeichen of each type
+ CREATE UNIQUE INDEX kennzeichen_aktiv_constraint ON public.tbl_kennzeichen (person_id, kennzeichentyp_kurzbz) WHERE aktiv;';
+
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen: '.$db->db_last_error().'
';
+ else
+ echo '
public.tbl_kennzeichen table created';
+
+ $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichen TO web;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen: '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to web on public.tbl_kennzeichen';
+
+ $qry = 'GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE public.tbl_kennzeichen TO vilesci;';
+ if (!$db->db_query($qry))
+ echo 'public.tbl_kennzeichen: '.$db->db_last_error().'
';
+ else
+ echo '
Granted privileges to vilesci on public.tbl_kennzeichen';
+}