From 77737db3d208c98ee7a3383414495dc6e27be2e4 Mon Sep 17 00:00:00 2001
From: Peter Gerwinski <peter.gerwinski@hs-bochum.de>
Date: Thu, 14 Dec 2023 14:12:38 +0100
Subject: [PATCH] Beispiele 14.12.2023

---
 20231207/school-01.php          |   2 +-
 20231214/hello-03.sh            |   3 +
 20231214/hello-04.sh            |   5 +
 20231214/hello-05.sh            |   6 +
 20231214/hello-06.sh            |   8 +
 20231214/hello-07.sh            |   8 +
 20231214/hello-08.sh            |   8 +
 20231214/index-03.html          |   8 +
 20231214/index-04.html          |   8 +
 20231214/index-05.html          |   8 +
 20231214/index-06.html          |   8 +
 20231214/index-07.html          |   8 +
 20231214/index-08.html          |   8 +
 20231214/school-03.html         |  10 +
 20231214/school-03.php          |  52 +++
 20231214/school-04.html         |  10 +
 20231214/school-04.php          |  52 +++
 20231214/testdb-20231214-01.sql | 620 +++++++++++++++++++++++++++++++
 20231214/testdb-20231214-02.sql | 627 ++++++++++++++++++++++++++++++++
 19 files changed, 1458 insertions(+), 1 deletion(-)
 create mode 100755 20231214/hello-03.sh
 create mode 100755 20231214/hello-04.sh
 create mode 100755 20231214/hello-05.sh
 create mode 100755 20231214/hello-06.sh
 create mode 100755 20231214/hello-07.sh
 create mode 100755 20231214/hello-08.sh
 create mode 100644 20231214/index-03.html
 create mode 100644 20231214/index-04.html
 create mode 100644 20231214/index-05.html
 create mode 100644 20231214/index-06.html
 create mode 100644 20231214/index-07.html
 create mode 100644 20231214/index-08.html
 create mode 100644 20231214/school-03.html
 create mode 100644 20231214/school-03.php
 create mode 100644 20231214/school-04.html
 create mode 100644 20231214/school-04.php
 create mode 100644 20231214/testdb-20231214-01.sql
 create mode 100644 20231214/testdb-20231214-02.sql

diff --git a/20231207/school-01.php b/20231207/school-01.php
index 2905666..368dea1 100644
--- a/20231207/school-01.php
+++ b/20231207/school-01.php
@@ -17,7 +17,7 @@
       $db->exec ('INSERT INTO students (first_name, family_name) VALUES ( '
                  .$_POST["first_name"].', '.$_POST["familty_name"]
                  .' );');
-      $stmt = $db->query ('SELECT * FROM student;');
+      $stmt = $db->query ('SELECT * FROM students;');
       echo '<table><tr>';
       while ($row = $stmt->fetch())
         {
diff --git a/20231214/hello-03.sh b/20231214/hello-03.sh
new file mode 100755
index 0000000..9f3f770
--- /dev/null
+++ b/20231214/hello-03.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+echo "Hello, world!"
diff --git a/20231214/hello-04.sh b/20231214/hello-04.sh
new file mode 100755
index 0000000..b485fe8
--- /dev/null
+++ b/20231214/hello-04.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+echo Content-Type: text/plain
+echo
+echo "Hello, world!"
diff --git a/20231214/hello-05.sh b/20231214/hello-05.sh
new file mode 100755
index 0000000..c5d804a
--- /dev/null
+++ b/20231214/hello-05.sh
@@ -0,0 +1,6 @@
+#!/bin/bash
+
+echo Content-Type: text/plain
+echo
+
+echo "QUERY_STRING = $QUERY_STRING"
diff --git a/20231214/hello-06.sh b/20231214/hello-06.sh
new file mode 100755
index 0000000..814f8e3
--- /dev/null
+++ b/20231214/hello-06.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo Content-Type: text/plain
+echo
+
+name=$(echo $QUERY_STRING | cut -d '=' -f 2)
+
+echo "Hello, $name!"
diff --git a/20231214/hello-07.sh b/20231214/hello-07.sh
new file mode 100755
index 0000000..fc3855d
--- /dev/null
+++ b/20231214/hello-07.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo Content-Type: text/plain
+echo
+
+name=$(cut -d '=' -f 2)
+
+echo "Hello, $name!"
diff --git a/20231214/hello-08.sh b/20231214/hello-08.sh
new file mode 100755
index 0000000..29468b4
--- /dev/null
+++ b/20231214/hello-08.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+echo Content-Type: text/plain
+echo
+
+name=$(echo $QUERY_STRING | cut -d '=' -f 2)
+
+echo Hello, $name!
diff --git a/20231214/index-03.html b/20231214/index-03.html
new file mode 100644
index 0000000..648e721
--- /dev/null
+++ b/20231214/index-03.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-03.sh" method="post">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/index-04.html b/20231214/index-04.html
new file mode 100644
index 0000000..f943391
--- /dev/null
+++ b/20231214/index-04.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-04.sh" method="get">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/index-05.html b/20231214/index-05.html
new file mode 100644
index 0000000..9f8c06a
--- /dev/null
+++ b/20231214/index-05.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-05.sh" method="get">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/index-06.html b/20231214/index-06.html
new file mode 100644
index 0000000..ec45793
--- /dev/null
+++ b/20231214/index-06.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-06.sh" method="get">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/index-07.html b/20231214/index-07.html
new file mode 100644
index 0000000..5edf944
--- /dev/null
+++ b/20231214/index-07.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-07.sh" method="post">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/index-08.html b/20231214/index-08.html
new file mode 100644
index 0000000..48bddf3
--- /dev/null
+++ b/20231214/index-08.html
@@ -0,0 +1,8 @@
+<html>
+  <body>
+    <form action="http://localhost/cgi-bin/hello-08.sh" method="get">
+      Your name: <input type="text" name="name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/school-03.html b/20231214/school-03.html
new file mode 100644
index 0000000..ea7ee82
--- /dev/null
+++ b/20231214/school-03.html
@@ -0,0 +1,10 @@
+<html>
+  <body>
+    <h3>Register new student</h3>
+    <form action="school-03.php" method="post">
+      First name: <input type="text" name="first_name"><br>
+      Family name: <input type="text" name="family_name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/school-03.php b/20231214/school-03.php
new file mode 100644
index 0000000..1877203
--- /dev/null
+++ b/20231214/school-03.php
@@ -0,0 +1,52 @@
+<html>
+  <body>
+    <?php
+      try
+        {
+          $db = new PDO ('pgsql: host = localhost; dbname = testdb; user = dbs; password = 1234');
+        }
+      catch (\PDOException $e)
+        {
+          echo '<p>';
+          echo $e->getMessage();
+          echo '</p>';
+          echo '<p>';
+          exit ('cannot connect to database');
+          echo '</p>';
+        }
+      echo '<p>';
+      echo "INSERT INTO students (first_name, family_name) VALUES ( '"
+           .$_POST["first_name"]."', '".$_POST["family_name"]
+           ."' );";
+      echo '</p>';
+      $db->exec ("INSERT INTO students (first_name, family_name) VALUES ( '"
+                 .$_POST["first_name"]."', '".$_POST["family_name"]
+                 ."' );");
+      $stmt = $db->query ('SELECT * FROM students;');
+      echo '<table><tr>';
+      while ($row = $stmt->fetch())
+        {
+          echo '<tr><td>';
+          echo $row['id'];
+          echo '</td><td>';
+          echo $row['first_name'];
+          echo '</td><td>';
+          echo $row['family_name'];
+          echo '</td></tr>';
+        }
+      echo '</tr></table>';
+    ?>
+  </body>
+</html> 
+
+<!-- Aus den Log-Dateien des Web-Servers:
+
+  [Thu Dec 07 12:50:06.952167 2023] [php:error] [pid 163970] [client ::1:52394]
+  PHP Fatal error:  Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7
+  FEHLER:  Syntaxfehler bei \xc2\xbb)\xc2\xab\nLINE 1: ... INTO students
+  (first_name, family_name) VALUES ( Peter,  );\n
+  ^ in /var/www/dbs/school-01.php:17\nStack trace:\n#0
+  /var/www/dbs/school-01.php(17): PDO->exec()\n#1 {main}\n  thrown in
+  /var/www/dbs/school-01.php on line 17
+
+-->
diff --git a/20231214/school-04.html b/20231214/school-04.html
new file mode 100644
index 0000000..3d20e2c
--- /dev/null
+++ b/20231214/school-04.html
@@ -0,0 +1,10 @@
+<html>
+  <body>
+    <h3>Register new student</h3>
+    <form action="school-04.php" method="post">
+      First name: <input type="text" name="first_name"><br>
+      Family name: <input type="text" name="family_name"><br>
+      <input type="submit">
+    </form>
+  </body>
+</html> 
diff --git a/20231214/school-04.php b/20231214/school-04.php
new file mode 100644
index 0000000..285f40e
--- /dev/null
+++ b/20231214/school-04.php
@@ -0,0 +1,52 @@
+<html>
+  <body>
+    <?php
+      try
+        {
+          $db = new PDO ('pgsql: host = localhost; dbname = testdb; user = dbs; password = 1234');
+        }
+      catch (\PDOException $e)
+        {
+          echo '<p>';
+          echo $e->getMessage();
+          echo '</p>';
+          echo '<p>';
+          exit ('cannot connect to database');
+          echo '</p>';
+        }
+      echo '<p>';
+      $first_name = str_replace ("'", "''", $_POST["first_name"]);
+      $family_name = str_replace ("'", "''", $_POST["family_name"]);
+      echo "INSERT INTO students (first_name, family_name) VALUES ( '"
+           .$first_name."', '".$family_name."' );";
+      echo '</p>';
+      $db->exec ("INSERT INTO students (first_name, family_name) VALUES ( '"
+                 .$first_name."', '".$family_name."' );");
+      $stmt = $db->query ('SELECT * FROM students;');
+      echo '<table><tr>';
+      while ($row = $stmt->fetch())
+        {
+          echo '<tr><td>';
+          echo $row['id'];
+          echo '</td><td>';
+          echo $row['first_name'];
+          echo '</td><td>';
+          echo $row['family_name'];
+          echo '</td></tr>';
+        }
+      echo '</tr></table>';
+    ?>
+  </body>
+</html> 
+
+<!-- Aus den Log-Dateien des Web-Servers:
+
+  [Thu Dec 07 12:50:06.952167 2023] [php:error] [pid 163970] [client ::1:52394]
+  PHP Fatal error:  Uncaught PDOException: SQLSTATE[42601]: Syntax error: 7
+  FEHLER:  Syntaxfehler bei \xc2\xbb)\xc2\xab\nLINE 1: ... INTO students
+  (first_name, family_name) VALUES ( Peter,  );\n
+  ^ in /var/www/dbs/school-01.php:17\nStack trace:\n#0
+  /var/www/dbs/school-01.php(17): PDO->exec()\n#1 {main}\n  thrown in
+  /var/www/dbs/school-01.php on line 17
+
+-->
diff --git a/20231214/testdb-20231214-01.sql b/20231214/testdb-20231214-01.sql
new file mode 100644
index 0000000..41d713c
--- /dev/null
+++ b/20231214/testdb-20231214-01.sql
@@ -0,0 +1,620 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 15.5 (Debian 15.5-0+deb12u1)
+-- Dumped by pg_dump version 15.5 (Debian 15.5-0+deb12u1)
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+ALTER TABLE ONLY public.lied DROP CONSTRAINT lied_fkey_cd_id;
+ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_fkey_account_id;
+ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_fkey_interpret_id;
+DROP TRIGGER after_update_account ON public.account;
+DROP INDEX public.index_account_number;
+ALTER TABLE ONLY public.tier DROP CONSTRAINT tier_pkey;
+ALTER TABLE ONLY public.interpret DROP CONSTRAINT interpret_pkey;
+ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_pkey;
+ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_pkey;
+ALTER TABLE ONLY public.account DROP CONSTRAINT account_pkey;
+ALTER TABLE public.tier ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.students ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.interpret ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.customer ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.cd ALTER COLUMN cd_id DROP DEFAULT;
+ALTER TABLE public.account ALTER COLUMN id DROP DEFAULT;
+DROP SEQUENCE public.tier_id_seq;
+DROP TABLE public.tier;
+DROP TABLE public.test;
+DROP SEQUENCE public.students_id_seq;
+DROP TABLE public.students;
+DROP VIEW public.lied_auf_cd;
+DROP TABLE public.lied;
+DROP SEQUENCE public.interpret_id_seq;
+DROP TABLE public.interpret;
+DROP SEQUENCE public.customer_id_seq;
+DROP TABLE public.customer;
+DROP SEQUENCE public.cd_cd_id_seq;
+DROP TABLE public.cd;
+DROP TABLE public.account_log;
+DROP SEQUENCE public.account_id_seq;
+DROP TABLE public.account;
+DROP PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer);
+DROP FUNCTION public.log_change();
+--
+-- Name: log_change(); Type: FUNCTION; Schema: public; Owner: dbs
+--
+
+CREATE FUNCTION public.log_change() RETURNS trigger
+    LANGUAGE plpgsql
+    AS $$
+begin if new.balance <> old.balance then
+  insert into account_log (account_id, change, datetime) values (old.id, new.balance - old.balance, now ());
+end if;
+return new;
+end;
+$$;
+
+
+ALTER FUNCTION public.log_change() OWNER TO dbs;
+
+--
+-- Name: transfer(integer, integer, integer); Type: PROCEDURE; Schema: public; Owner: dbs
+--
+
+CREATE PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer)
+    LANGUAGE sql
+    AS $$UPDATE account SET balance = balance + amount WHERE id = receiver; UPDATE account SET balance = balance - amount WHERE id = sender;$$;
+
+
+ALTER PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer) OWNER TO dbs;
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: account; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.account (
+    id integer NOT NULL,
+    number text,
+    balance integer
+);
+
+
+ALTER TABLE public.account OWNER TO dbs;
+
+--
+-- Name: account_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.account_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.account_id_seq OWNER TO dbs;
+
+--
+-- Name: account_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.account_id_seq OWNED BY public.account.id;
+
+
+--
+-- Name: account_log; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.account_log (
+    account_id integer,
+    change integer,
+    datetime timestamp without time zone
+);
+
+
+ALTER TABLE public.account_log OWNER TO dbs;
+
+--
+-- Name: cd; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.cd (
+    cd_id integer NOT NULL,
+    albumtitel text,
+    interpret_id integer,
+    erscheinungsjahr integer
+);
+
+
+ALTER TABLE public.cd OWNER TO dbs;
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.cd_cd_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.cd_cd_id_seq OWNER TO dbs;
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.cd_cd_id_seq OWNED BY public.cd.cd_id;
+
+
+--
+-- Name: customer; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.customer (
+    id integer NOT NULL,
+    lastname text,
+    firstname text,
+    account_id integer
+);
+
+
+ALTER TABLE public.customer OWNER TO dbs;
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.customer_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.customer_id_seq OWNER TO dbs;
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.customer_id_seq OWNED BY public.customer.id;
+
+
+--
+-- Name: interpret; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.interpret (
+    id integer NOT NULL,
+    name text,
+    gruendungsjahr integer
+);
+
+
+ALTER TABLE public.interpret OWNER TO dbs;
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.interpret_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.interpret_id_seq OWNER TO dbs;
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.interpret_id_seq OWNED BY public.interpret.id;
+
+
+--
+-- Name: lied; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.lied (
+    cd_id integer,
+    track integer,
+    titel text
+);
+
+
+ALTER TABLE public.lied OWNER TO dbs;
+
+--
+-- Name: lied_auf_cd; Type: VIEW; Schema: public; Owner: dbs
+--
+
+CREATE VIEW public.lied_auf_cd AS
+ SELECT cd.cd_id,
+    cd.albumtitel,
+    interpret.name,
+    interpret.gruendungsjahr,
+    cd.erscheinungsjahr,
+    lied.track,
+    lied.titel
+   FROM ((public.cd
+     JOIN public.lied ON ((cd.cd_id = lied.cd_id)))
+     JOIN public.interpret ON ((cd.interpret_id = interpret.id)));
+
+
+ALTER TABLE public.lied_auf_cd OWNER TO dbs;
+
+--
+-- Name: students; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.students (
+    id integer NOT NULL,
+    first_name text,
+    family_name text
+);
+
+
+ALTER TABLE public.students OWNER TO dbs;
+
+--
+-- Name: students_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.students_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.students_id_seq OWNER TO dbs;
+
+--
+-- Name: students_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.students_id_seq OWNED BY public.students.id;
+
+
+--
+-- Name: test; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.test (
+    id integer,
+    s text
+);
+
+
+ALTER TABLE public.test OWNER TO dbs;
+
+--
+-- Name: tier; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.tier (
+    id integer NOT NULL,
+    name text,
+    tierart text
+);
+
+
+ALTER TABLE public.tier OWNER TO dbs;
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.tier_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.tier_id_seq OWNER TO dbs;
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.tier_id_seq OWNED BY public.tier.id;
+
+
+--
+-- Name: account id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.account ALTER COLUMN id SET DEFAULT nextval('public.account_id_seq'::regclass);
+
+
+--
+-- Name: cd cd_id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd ALTER COLUMN cd_id SET DEFAULT nextval('public.cd_cd_id_seq'::regclass);
+
+
+--
+-- Name: customer id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer ALTER COLUMN id SET DEFAULT nextval('public.customer_id_seq'::regclass);
+
+
+--
+-- Name: interpret id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.interpret ALTER COLUMN id SET DEFAULT nextval('public.interpret_id_seq'::regclass);
+
+
+--
+-- Name: students id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.students ALTER COLUMN id SET DEFAULT nextval('public.students_id_seq'::regclass);
+
+
+--
+-- Name: tier id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.tier ALTER COLUMN id SET DEFAULT nextval('public.tier_id_seq'::regclass);
+
+
+--
+-- Data for Name: account; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.account (id, number, balance) FROM stdin;
+1	DE12 3456 7890 ABCD EFGH IJ	1000009
+2	DE98 7654 3210 ABCD EFGH IJ	3999990
+\.
+
+
+--
+-- Data for Name: account_log; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.account_log (account_id, change, datetime) FROM stdin;
+1	10	2023-12-07 12:07:38.614305
+2	-10	2023-12-07 12:07:38.614305
+\.
+
+
+--
+-- Data for Name: cd; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.cd (cd_id, albumtitel, interpret_id, erscheinungsjahr) FROM stdin;
+4711	Not That Kind	1	2000
+4712	Wish You Were Here	2	1975
+4713	Freak of Nature	1	2001
+4714	Songs for the Deaf	3	2002
+\.
+
+
+--
+-- Data for Name: customer; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.customer (id, lastname, firstname, account_id) FROM stdin;
+2	Mustermann	Erika	1
+4	Rich	Richie	2
+\.
+
+
+--
+-- Data for Name: interpret; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.interpret (id, name, gruendungsjahr) FROM stdin;
+1	Anastacia	1999
+2	Pink Floyd	1965
+3	Queens of the Stone Age	1996
+\.
+
+
+--
+-- Data for Name: lied; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.lied (cd_id, track, titel) FROM stdin;
+4711	1	Not That Kind
+4711	2	I'm Otta Love
+4711	3	Cowboys & Kisses
+4712	1	Shine On You Crazy Diamond
+4713	1	Paid my Dues
+\.
+
+
+--
+-- Data for Name: students; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.students (id, first_name, family_name) FROM stdin;
+1	Peter	Gerwinski
+2	Benedikt	Wildenhain
+\.
+
+
+--
+-- Data for Name: test; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.test (id, s) FROM stdin;
+7	Zwerge
+\.
+
+
+--
+-- Data for Name: tier; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.tier (id, name, tierart) FROM stdin;
+1	Esmeralda                     	Spinne                        
+2	Timmy                         	Hund                          
+3	Dio                           	Katze                         
+4	Tusnelda                      	Spinne                        
+5	Ragnar                        	Katze                         
+6	Putzi                         	Ratte                         
+7	Felix                         	Troll                         
+8	Rex                           	Ameise                        
+\.
+
+
+--
+-- Name: account_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.account_id_seq', 2, true);
+
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.cd_cd_id_seq', 1, false);
+
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.customer_id_seq', 4, true);
+
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.interpret_id_seq', 1, false);
+
+
+--
+-- Name: students_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.students_id_seq', 2, true);
+
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.tier_id_seq', 1, false);
+
+
+--
+-- Name: account account_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.account
+    ADD CONSTRAINT account_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: cd cd_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd
+    ADD CONSTRAINT cd_pkey PRIMARY KEY (cd_id);
+
+
+--
+-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer
+    ADD CONSTRAINT customer_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: interpret interpret_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.interpret
+    ADD CONSTRAINT interpret_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: tier tier_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.tier
+    ADD CONSTRAINT tier_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: index_account_number; Type: INDEX; Schema: public; Owner: dbs
+--
+
+CREATE INDEX index_account_number ON public.account USING btree (number);
+
+
+--
+-- Name: account after_update_account; Type: TRIGGER; Schema: public; Owner: dbs
+--
+
+CREATE TRIGGER after_update_account AFTER UPDATE ON public.account FOR EACH ROW EXECUTE FUNCTION public.log_change();
+
+
+--
+-- Name: cd cd_fkey_interpret_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd
+    ADD CONSTRAINT cd_fkey_interpret_id FOREIGN KEY (interpret_id) REFERENCES public.interpret(id);
+
+
+--
+-- Name: customer customer_fkey_account_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer
+    ADD CONSTRAINT customer_fkey_account_id FOREIGN KEY (account_id) REFERENCES public.account(id);
+
+
+--
+-- Name: lied lied_fkey_cd_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.lied
+    ADD CONSTRAINT lied_fkey_cd_id FOREIGN KEY (cd_id) REFERENCES public.cd(cd_id);
+
+
+--
+-- PostgreSQL database dump complete
+--
+
diff --git a/20231214/testdb-20231214-02.sql b/20231214/testdb-20231214-02.sql
new file mode 100644
index 0000000..e6cfaf9
--- /dev/null
+++ b/20231214/testdb-20231214-02.sql
@@ -0,0 +1,627 @@
+--
+-- PostgreSQL database dump
+--
+
+-- Dumped from database version 15.5 (Debian 15.5-0+deb12u1)
+-- Dumped by pg_dump version 15.5 (Debian 15.5-0+deb12u1)
+
+SET statement_timeout = 0;
+SET lock_timeout = 0;
+SET idle_in_transaction_session_timeout = 0;
+SET client_encoding = 'UTF8';
+SET standard_conforming_strings = on;
+SELECT pg_catalog.set_config('search_path', '', false);
+SET check_function_bodies = false;
+SET xmloption = content;
+SET client_min_messages = warning;
+SET row_security = off;
+
+ALTER TABLE ONLY public.lied DROP CONSTRAINT lied_fkey_cd_id;
+ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_fkey_account_id;
+ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_fkey_interpret_id;
+DROP TRIGGER after_update_account ON public.account;
+DROP INDEX public.index_account_number;
+ALTER TABLE ONLY public.tier DROP CONSTRAINT tier_pkey;
+ALTER TABLE ONLY public.interpret DROP CONSTRAINT interpret_pkey;
+ALTER TABLE ONLY public.customer DROP CONSTRAINT customer_pkey;
+ALTER TABLE ONLY public.cd DROP CONSTRAINT cd_pkey;
+ALTER TABLE ONLY public.account DROP CONSTRAINT account_pkey;
+ALTER TABLE public.tier ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.students ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.interpret ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.customer ALTER COLUMN id DROP DEFAULT;
+ALTER TABLE public.cd ALTER COLUMN cd_id DROP DEFAULT;
+ALTER TABLE public.account ALTER COLUMN id DROP DEFAULT;
+DROP SEQUENCE public.tier_id_seq;
+DROP TABLE public.tier;
+DROP TABLE public.test;
+DROP SEQUENCE public.students_id_seq;
+DROP TABLE public.students;
+DROP VIEW public.lied_auf_cd;
+DROP TABLE public.lied;
+DROP SEQUENCE public.interpret_id_seq;
+DROP TABLE public.interpret;
+DROP SEQUENCE public.customer_id_seq;
+DROP TABLE public.customer;
+DROP SEQUENCE public.cd_cd_id_seq;
+DROP TABLE public.cd;
+DROP TABLE public.account_log;
+DROP SEQUENCE public.account_id_seq;
+DROP TABLE public.account;
+DROP PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer);
+DROP FUNCTION public.log_change();
+--
+-- Name: log_change(); Type: FUNCTION; Schema: public; Owner: dbs
+--
+
+CREATE FUNCTION public.log_change() RETURNS trigger
+    LANGUAGE plpgsql
+    AS $$
+begin
+  if new.balance <> old.balance then
+    insert into account_log (account_id, change, datetime)
+           values (old.id, new.balance - old.balance, now ());
+  end if;
+  return new;
+end;
+$$;
+
+
+ALTER FUNCTION public.log_change() OWNER TO dbs;
+
+--
+-- Name: transfer(integer, integer, integer); Type: PROCEDURE; Schema: public; Owner: dbs
+--
+
+CREATE PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer)
+    LANGUAGE sql
+    AS $$
+UPDATE account SET balance = balance + amount WHERE id = receiver;
+UPDATE account SET balance = balance - amount WHERE id = sender;
+$$;
+
+
+ALTER PROCEDURE public.transfer(IN sender integer, IN receiver integer, IN amount integer)
+                OWNER TO dbs;
+
+SET default_tablespace = '';
+
+SET default_table_access_method = heap;
+
+--
+-- Name: account; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.account (
+    id integer NOT NULL,
+    number text,
+    balance integer
+);
+
+
+ALTER TABLE public.account OWNER TO dbs;
+
+--
+-- Name: account_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.account_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.account_id_seq OWNER TO dbs;
+
+--
+-- Name: account_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.account_id_seq OWNED BY public.account.id;
+
+
+--
+-- Name: account_log; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.account_log (
+    account_id integer,
+    change integer,
+    datetime timestamp without time zone
+);
+
+
+ALTER TABLE public.account_log OWNER TO dbs;
+
+--
+-- Name: cd; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.cd (
+    cd_id integer NOT NULL,
+    albumtitel text,
+    interpret_id integer,
+    erscheinungsjahr integer
+);
+
+
+ALTER TABLE public.cd OWNER TO dbs;
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.cd_cd_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.cd_cd_id_seq OWNER TO dbs;
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.cd_cd_id_seq OWNED BY public.cd.cd_id;
+
+
+--
+-- Name: customer; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.customer (
+    id integer NOT NULL,
+    lastname text,
+    firstname text,
+    account_id integer
+);
+
+
+ALTER TABLE public.customer OWNER TO dbs;
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.customer_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.customer_id_seq OWNER TO dbs;
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.customer_id_seq OWNED BY public.customer.id;
+
+
+--
+-- Name: interpret; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.interpret (
+    id integer NOT NULL,
+    name text,
+    gruendungsjahr integer
+);
+
+
+ALTER TABLE public.interpret OWNER TO dbs;
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.interpret_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.interpret_id_seq OWNER TO dbs;
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.interpret_id_seq OWNED BY public.interpret.id;
+
+
+--
+-- Name: lied; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.lied (
+    cd_id integer,
+    track integer,
+    titel text
+);
+
+
+ALTER TABLE public.lied OWNER TO dbs;
+
+--
+-- Name: lied_auf_cd; Type: VIEW; Schema: public; Owner: dbs
+--
+
+CREATE VIEW public.lied_auf_cd AS
+ SELECT cd.cd_id,
+    cd.albumtitel,
+    interpret.name,
+    interpret.gruendungsjahr,
+    cd.erscheinungsjahr,
+    lied.track,
+    lied.titel
+   FROM ((public.cd
+     JOIN public.lied ON ((cd.cd_id = lied.cd_id)))
+     JOIN public.interpret ON ((cd.interpret_id = interpret.id)));
+
+
+ALTER TABLE public.lied_auf_cd OWNER TO dbs;
+
+--
+-- Name: students; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.students (
+    id integer NOT NULL,
+    first_name text,
+    family_name text
+);
+
+
+ALTER TABLE public.students OWNER TO dbs;
+
+--
+-- Name: students_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.students_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.students_id_seq OWNER TO dbs;
+
+--
+-- Name: students_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.students_id_seq OWNED BY public.students.id;
+
+
+--
+-- Name: test; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.test (
+    id integer,
+    s text
+);
+
+
+ALTER TABLE public.test OWNER TO dbs;
+
+--
+-- Name: tier; Type: TABLE; Schema: public; Owner: dbs
+--
+
+CREATE TABLE public.tier (
+    id integer NOT NULL,
+    name text,
+    tierart text
+);
+
+
+ALTER TABLE public.tier OWNER TO dbs;
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE; Schema: public; Owner: dbs
+--
+
+CREATE SEQUENCE public.tier_id_seq
+    AS integer
+    START WITH 1
+    INCREMENT BY 1
+    NO MINVALUE
+    NO MAXVALUE
+    CACHE 1;
+
+
+ALTER TABLE public.tier_id_seq OWNER TO dbs;
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: dbs
+--
+
+ALTER SEQUENCE public.tier_id_seq OWNED BY public.tier.id;
+
+
+--
+-- Name: account id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.account ALTER COLUMN id SET DEFAULT nextval('public.account_id_seq'::regclass);
+
+
+--
+-- Name: cd cd_id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd ALTER COLUMN cd_id SET DEFAULT nextval('public.cd_cd_id_seq'::regclass);
+
+
+--
+-- Name: customer id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer ALTER COLUMN id SET DEFAULT nextval('public.customer_id_seq'::regclass);
+
+
+--
+-- Name: interpret id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.interpret ALTER COLUMN id SET DEFAULT nextval('public.interpret_id_seq'::regclass);
+
+
+--
+-- Name: students id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.students ALTER COLUMN id SET DEFAULT nextval('public.students_id_seq'::regclass);
+
+
+--
+-- Name: tier id; Type: DEFAULT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.tier ALTER COLUMN id SET DEFAULT nextval('public.tier_id_seq'::regclass);
+
+
+--
+-- Data for Name: account; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.account (id, number, balance) FROM stdin;
+1	DE12 3456 7890 ABCD EFGH IJ	1000009
+2	DE98 7654 3210 ABCD EFGH IJ	3999990
+\.
+
+
+--
+-- Data for Name: account_log; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.account_log (account_id, change, datetime) FROM stdin;
+1	10	2023-12-07 12:07:38.614305
+2	-10	2023-12-07 12:07:38.614305
+\.
+
+
+--
+-- Data for Name: cd; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.cd (cd_id, albumtitel, interpret_id, erscheinungsjahr) FROM stdin;
+4711	Not That Kind	1	2000
+4712	Wish You Were Here	2	1975
+4713	Freak of Nature	1	2001
+4714	Songs for the Deaf	3	2002
+\.
+
+
+--
+-- Data for Name: customer; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.customer (id, lastname, firstname, account_id) FROM stdin;
+2	Mustermann	Erika	1
+4	Rich	Richie	2
+\.
+
+
+--
+-- Data for Name: interpret; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.interpret (id, name, gruendungsjahr) FROM stdin;
+1	Anastacia	1999
+2	Pink Floyd	1965
+3	Queens of the Stone Age	1996
+\.
+
+
+--
+-- Data for Name: lied; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.lied (cd_id, track, titel) FROM stdin;
+4711	1	Not That Kind
+4711	2	I'm Otta Love
+4711	3	Cowboys & Kisses
+4712	1	Shine On You Crazy Diamond
+4713	1	Paid my Dues
+\.
+
+
+--
+-- Data for Name: students; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.students (id, first_name, family_name) FROM stdin;
+1	Peter	Gerwinski
+2	Benedikt	Wildenhain
+\.
+
+
+--
+-- Data for Name: test; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.test (id, s) FROM stdin;
+7	Zwerge
+\.
+
+
+--
+-- Data for Name: tier; Type: TABLE DATA; Schema: public; Owner: dbs
+--
+
+COPY public.tier (id, name, tierart) FROM stdin;
+1	Esmeralda                     	Spinne                        
+2	Timmy                         	Hund                          
+3	Dio                           	Katze                         
+4	Tusnelda                      	Spinne                        
+5	Ragnar                        	Katze                         
+6	Putzi                         	Ratte                         
+7	Felix                         	Troll                         
+8	Rex                           	Ameise                        
+\.
+
+
+--
+-- Name: account_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.account_id_seq', 2, true);
+
+
+--
+-- Name: cd_cd_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.cd_cd_id_seq', 1, false);
+
+
+--
+-- Name: customer_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.customer_id_seq', 4, true);
+
+
+--
+-- Name: interpret_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.interpret_id_seq', 1, false);
+
+
+--
+-- Name: students_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.students_id_seq', 2, true);
+
+
+--
+-- Name: tier_id_seq; Type: SEQUENCE SET; Schema: public; Owner: dbs
+--
+
+SELECT pg_catalog.setval('public.tier_id_seq', 1, false);
+
+
+--
+-- Name: account account_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.account
+    ADD CONSTRAINT account_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: cd cd_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd
+    ADD CONSTRAINT cd_pkey PRIMARY KEY (cd_id);
+
+
+--
+-- Name: customer customer_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer
+    ADD CONSTRAINT customer_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: interpret interpret_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.interpret
+    ADD CONSTRAINT interpret_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: tier tier_pkey; Type: CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.tier
+    ADD CONSTRAINT tier_pkey PRIMARY KEY (id);
+
+
+--
+-- Name: index_account_number; Type: INDEX; Schema: public; Owner: dbs
+--
+
+CREATE INDEX index_account_number ON public.account USING btree (number);
+
+
+--
+-- Name: account after_update_account; Type: TRIGGER; Schema: public; Owner: dbs
+--
+
+CREATE TRIGGER after_update_account AFTER UPDATE ON public.account
+               FOR EACH ROW EXECUTE FUNCTION public.log_change();
+
+
+--
+-- Name: cd cd_fkey_interpret_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.cd
+    ADD CONSTRAINT cd_fkey_interpret_id FOREIGN KEY (interpret_id) REFERENCES public.interpret(id);
+
+
+--
+-- Name: customer customer_fkey_account_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.customer
+    ADD CONSTRAINT customer_fkey_account_id FOREIGN KEY (account_id) REFERENCES public.account(id);
+
+
+--
+-- Name: lied lied_fkey_cd_id; Type: FK CONSTRAINT; Schema: public; Owner: dbs
+--
+
+ALTER TABLE ONLY public.lied
+    ADD CONSTRAINT lied_fkey_cd_id FOREIGN KEY (cd_id) REFERENCES public.cd(cd_id);
+
+
+--
+-- PostgreSQL database dump complete
+--
+
-- 
GitLab