Error bei Trigger

Kirby.exe

Top Contributor
Also ich versuche gerade zwei Trigger in meine Docker Init Script einzubinden. Ich habe das Init Script bereits ohne den Part getestet und dort bekomme ich keine Fehler...Nur wenn ich es wieder einbaue.

Bash:
CREATE FUNCTION creation_datetime() RETURNS trigger
                          LANGUAGE plpgsql
                          AS $$
                      BEGIN
                          NEW.creation_date = CURRENT_TIMESTAMP;
                          RETURN NEW;
                      END $$;
    CREATE FUNCTION sales_datetime() RETURNS trigger
                  LANGUAGE plpgsql
                  AS $$
              BEGIN
                  NEW.sales_datetime = CURRENT_TIMESTAMP;
                  RETURN NEW;
              END $$;
    CREATE TRIGGER customer_creation_date
                BEFORE INSERT ON customer
                FOR EACH ROW EXECUTE PROCEDURE creation_datetime();
    CREATE TRIGGER sales_sale_datetime
                BEFORE INSERT ON sales
                FOR EACH ROW EXECUTE PROCEDURE sales_datetime();

Die Fehlermeldung ist:
Code:
db_1       | 2021-08-10 16:53:17.525 UTC [200] ERROR:  syntax error at or near "1" at character 125
db_1       | 2021-08-10 16:53:17.525 UTC [200] STATEMENT:  CREATE FUNCTION creation_datetime() RETURNS trigger
db_1       |                               LANGUAGE plpgsql
db_1       |                               AS 1
db_1       |                           BEGIN
db_1       |                               NEW.creation_date = CURRENT_TIMESTAMP;
db_1       | ERROR:  syntax error at or near "1"
db_1       | LINE 3:                           AS 1
db_1       |                                      ^
db_1       |
db_1       | PostgreSQL Database directory appears to contain a database; Skipping initialization
db_1       |
 
M

Mart

Gast
CREATE TRIGGER customer_creation_date
BEFORE INSERT ON customer
FOR EACH ROW EXECUTE PROCEDURE creation_datetime();
CREATE TRIGGER sales_sale_datetime
BEFORE INSERT ON sales
FOR EACH ROW EXECUTE PROCEDURE sales_datetime();[/CODE]
trigger muss man zumindest in (einfachen) sql den Bereich immer eingrenzen mit / .... Trigger ... / das liegt nahe an dem was du hast an fehlern
 

Kirby.exe

Top Contributor
Augenscheinlich wird "$$" ersetzt (naemlich mit "1") durch etwas bevor das Skript an die Datenbank uebergeben wird.
Die große Frage ist why xD Ich schicke einfach mal das gesamte Init Ding:

Bash:
#!/bin/bash
set -e

users=`cat /docker-entrypoint-initdb.d/users`
echo "Creating Shop Database"
for user in $users ;
do
    echo Creating user $user
    user_pw=`echo -n $user | md5sum | cut -c -5`

    psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    CREATE USER $user;
    CREATE DATABASE $user;
    REVOKE connect ON DATABASE $user FROM PUBLIC;
    GRANT ALL PRIVILEGES ON DATABASE $user TO $user;
    ALTER USER $user WITH PASSWORD '$user_pw';
    GRANT pg_read_server_files TO $user;
EOSQL

    echo Creating user sample database
    echo $user_pw | psql -W --username $user --dbname $user -f /docker-entrypoint-initdb.d/sample/dvdrental.sql

done

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
    CREATE DATABASE shop;
EOSQL

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "shop" <<-EOSQL
    CREATE TABLE IF NOT EXISTS address (
                    address_id SERIAL PRIMARY KEY,
                    street VARCHAR NOT NULL,
                    house_nr VARCHAR NOT NULL,
                    postcode VARCHAR(5) NOT NULL,
                    district VARCHAR,
                    city VARCHAR NOT NULL,
                    country VARCHAR NOT NULL
                );
    CREATE TABLE IF NOT EXISTS customer (
                    customer_id SERIAL PRIMARY KEY,
                    first_name VARCHAR NOT NULL,
                    last_name VARCHAR NOT NULL,
                    email VARCHAR NOT NULL,
                    password VARCHAR NOT NULL,
                    user_group VARCHAR NOT NULL Check(user_group = 'Admin' or user_group = 'User'),
                    address_id INTEGER REFERENCES address(address_id),
                    creation_date TIMESTAMP,
                    UNIQUE(email)
                );
    CREATE TABLE IF NOT EXISTS manufacture (
                    manufacture_id SERIAL PRIMARY KEY,
                    manufacture VARCHAR NOT NULL
                );
    CREATE TABLE IF NOT EXISTS category (
                    category_id SERIAL PRIMARY KEY,
                    category VARCHAR NOT NULL
                );
    CREATE TABLE IF NOT EXISTS item (
                    item_id SERIAL PRIMARY KEY,
                    name VARCHAR NOT NULL,
                    price FLOAT NOT NULL,
                    manufacture_id INTEGER REFERENCES manufacture(manufacture_id),
                    category_id INTEGER REFERENCES category(category_id)
                );
    CREATE TABLE IF NOT EXISTS sales (
                    sales_datetime TIMESTAMP,
                    item_id INTEGER REFERENCES item(item_id),
                    customer_id INTEGER REFERENCES customer(customer_id)
                );
    CREATE INDEX customer_email_idx ON customer (email);
    CREATE SEQUENCE IF NOT EXISTS customer_customer_id_seq
                        START WITH 1
                        INCREMENT BY 1
                        NO MINVALUE
                        NO MAXVALUE
                        CACHE 1;
    CREATE FUNCTION creation_datetime() RETURNS trigger
                          LANGUAGE plpgsql
                          AS $$
                      BEGIN
                          NEW.creation_date = CURRENT_TIMESTAMP;
                          RETURN NEW;
                      END $$;
    CREATE FUNCTION sales_datetime() RETURNS trigger
                  LANGUAGE plpgsql
                  AS $$
              BEGIN
                  NEW.sales_datetime = CURRENT_TIMESTAMP;
                  RETURN NEW;
              END $$;
    CREATE TRIGGER customer_creation_date
                BEFORE INSERT ON customer
                FOR EACH ROW EXECUTE PROCEDURE creation_datetime();
    CREATE TRIGGER sales_sale_datetime
                BEFORE INSERT ON sales
                FOR EACH ROW EXECUTE PROCEDURE sales_datetime();
EOSQL

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "shop" <<-EOSQL
    CREATE USER lager_user;
    GRANT SELECT ON TABLE item TO lager_user;
    GRANT SELECT ON TABLE manufacture TO lager_user;
    GRANT SELECT ON TABLE category TO lager_user;
EOSQL

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "shop" <<-EOSQL
    CREATE USER marketing_user;
    GRANT SELECT (customer_id, first_name, last_name, email) ON TABLE customer TO marketing_user;
EOSQL

psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "shop" <<-EOSQL
    CREATE USER statistik_user;
    GRANT SELECT ON TABLE item TO statistik_user;
    GRANT SELECT ON TABLE manufacture TO statistik_user;
    GRANT SELECT ON TABLE category TO statistik_user;
    GRANT SELECT (sales_datetime, item_id) ON TABLE sales TO statistik_user;
EOSQL
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Tom#234 Jakarta Web Service SQL Access Error Datenbankprogrammierung 7
D Hibernate Error: NoSuchMethodError Datenbankprogrammierung 4
thet1983 MySQL Error Code 1111: Invalid use of group function Datenbankprogrammierung 2
M MySQL Error in SQL syntax Datenbankprogrammierung 10
F Java SQLite Error Datenbankprogrammierung 19
dat_vin JavaFX Datenbankverbindung über JPA und MySQL Error Datenbankprogrammierung 0
G SQLLite error code 0x13: constraint failed Datenbankprogrammierung 7
L Conversion-Error bei JDBC Date Literals Datenbankprogrammierung 3
F Java SQL Syntax Error erst nach mehrmaligen Aufrufen Datenbankprogrammierung 3
H SQLite SQLExeption Domain error Datenbankprogrammierung 2
B Error: ORA-00933: SQL command not properly ended Datenbankprogrammierung 5
D Error 1452: Cannot add or update a child row: a foreign key constraint fails Datenbankprogrammierung 15
Cypha JPA Syntax error - falscher Aufbau? Datenbankprogrammierung 3
D SQL Skript "ignore this error" Datenbankprogrammierung 8
B My-SQL Abfrage - Out Of Memory Error Datenbankprogrammierung 13
GianaSisters MySQL Datenbank Select error Datenbankprogrammierung 5
P [Hibernate] SQL Syntax-Error Datenbankprogrammierung 2
D mysql - out of memory error Datenbankprogrammierung 4
X von myISAM auf MEMORY! ERROR 1114: Table full Datenbankprogrammierung 13
N SQL Query Browser Error Datenbankprogrammierung 6
E try Error Datenbankprogrammierung 2
A Socket write error Datenbankprogrammierung 2
L You have an error in your sql syntax Datenbankprogrammierung 4
D Bean: server internal error Datenbankprogrammierung 5
@ HSQLDB: socket creation error Datenbankprogrammierung 6
C Error in my_thread_global_end() - FehlerMeldung MySql? Datenbankprogrammierung 2
foobar ISAM error: too many files open Datenbankprogrammierung 5
E ERROR: argument of JOIN/ON must be type boolean? Datenbankprogrammierung 2
K Connection error Datenbankprogrammierung 18
R Function Sequence Error - Warum? Datenbankprogrammierung 2
Kirby.exe Trigger Datenbankprogrammierung 2
M Sql Trigger Datenbankprogrammierung 7
OnDemand MySQL Trigger löst nicht aus bei Hibernate Update Datenbankprogrammierung 12
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
D Trigger Datenbankprogrammierung 1
J SQL-Statement Trigger zeigt keine Wikrung PL/SQL Datenbankprogrammierung 2
P Trigger in DB Datenbankprogrammierung 1
T f:event preRenderView Trigger wird nicht ausgeführt Datenbankprogrammierung 4
M Oracle Trigger Datenbankprogrammierung 3
D Mit Trigger Tupel löschen verhindern Datenbankprogrammierung 3
K Trigger Datenbankprogrammierung 9
S Oracle Trigger Datenbankprogrammierung 5
E Trigger ??? Datenbankprogrammierung 5
Landei Trigger in MS-SQL Datenbankprogrammierung 3
M Datenbank mit trigger Datenbankprogrammierung 17
P DatenBank trigger Datenbankprogrammierung 7
T MySQL: Trigger und Prozeduren erstellen Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben