🍀 Das LibreOffice Forum braucht HEUTE Ihre Hilfe! 🍀
❤️ Spenden Sie jetzt und sichern Sie die Zukunft unseres LibreOffice-Forums ❤️
Ihre Spende hilft, die Community offen, werbefrei (bei Registrierung) und lebendig zu halten. Vielen lieben Dank!

🙏 DANKE >> << DANKE 🙏

>> Das LibreOffice-Forum lebt von Ihnen – und von vielen Experten, die freiwillig und kostenlos ihr Wissen teilen.<<
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

(gelöst) Zeichenkette als Default einer Spalte

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Zeichenkette als Default einer Spalte

Beitrag von Freischreiber » So 28. Dez 2014, 15:34

Danke, funktioniert! Ja, HSQL 2.3.2.

Jetzt hab ich gleich probiert, das abzuwandeln, damit auch ein Primärschlüsselfeld ausgefüllt werden kann, aber es scheitert mit "wrong or missing data impact clause in declaration: MODIFIES SQL":

Code: Alles auswählen

CREATE TRIGGER Triggername
    BEFORE INSERT ON "t-triggertest"
    REFERENCING NEW ROW AS NEWROW
    FOR EACH ROW BEGIN ATOMIC
    IF NEWROW."zusammen" IS NULL THEN
        UPDATE "t-triggertest" SET "zusammen" = NEWROW."Nachname" ||', '||NEWROW."Vorname" WHERE "zusammen" = NEWROW."zusammen";
    END IF;
END
Es gibt wohl eine Möglichkeit, ich kriegs aber nicht rein. Die Tabelle existiert halt schon... :
http://stackoverflow.com/questions/2954 ... -in-hsqldb

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

F3K Total
* LO-Experte *
Beiträge: 2515
Registriert: So 10. Apr 2011, 10:10

Re: Zeichenkette als Default einer Spalte

Beitrag von F3K Total » So 28. Dez 2014, 18:30

Hallo,
ich verstehe die Frage nicht.
Bitte erkläre genau was du in welcher, wie definierten Tabelle erreichen willst?
Am besten mit einer Beispieldatei.
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Zeichenkette als Default einer Spalte

Beitrag von Freischreiber » So 28. Dez 2014, 19:10

Hi,

es ist die Datei aus deinem Beispieltrigger. Wenn ich die "zusammen"-Spalte als Primärschlüssel definiert habe, klappt das Ausfüllen nicht, weil es "after insert" erst einmal leer wäre vor dem Ausfüllen durch den Trigger. Deshalb habe ich es mit "before insert" probiert, was aber so auch nicht geht...

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

F3K Total
* LO-Experte *
Beiträge: 2515
Registriert: So 10. Apr 2011, 10:10

Re: Zeichenkette als Default einer Spalte

Beitrag von F3K Total » Mo 29. Dez 2014, 10:11

Dein Vorhaben kann nicht funktionieren, die Katze beißt sich in den Schwanz!
Ohne PK keine Zeile, ohne Zeile kein PK.
Darum kannst du den PK nicht mit einem Trigger "before insert" zusammensetzen.
Was funktioniert, ist eine generierte Spalte:

Code: Alles auswählen

CREATE CACHED TABLE "Namen"("Nachname" VARCHAR(50),"Vorname" VARCHAR(50),"zusammen" VARCHAR(100) GENERATED ALWAYS AS(("Nachname"||', ')||"Vorname") PRIMARY KEY)
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Zeichenkette als Default einer Spalte

Beitrag von Freischreiber » Mo 29. Dez 2014, 13:06

Genial! Es funktioniert wirklich!

Das kombinierte Feld wird zwar nicht gleich in der Tabelle angezeigt, aber abfragen kann man es sofort.

Vielen Dank!

Gruß
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

F3K Total
* LO-Experte *
Beiträge: 2515
Registriert: So 10. Apr 2011, 10:10

Re: Zeichenkette als Default einer Spalte

Beitrag von F3K Total » Mo 29. Dez 2014, 13:15

Heureka!
Hier noch ein goodie:
Gib mal eine PK-Kombination ein, die schon existiert.
Dann erzeuge diesen TRIGGER und mach's nochmal.

Code: Alles auswählen

CREATE TRIGGER ERROR_MESSAGE_PK
    BEFORE INSERT ON "Namen2"
    REFERENCING NEW ROW AS NEWROW
    FOR EACH ROW
    BEGIN ATOMIC
        DECLARE ERROR_TEXT VARCHAR(100);
        DECLARE NCOUNT INTEGER;
        SET ERROR_TEXT='Der Primärschlüssel "'||NEWROW."Nachname"||', '||NEWROW."Vorname"||'" existiert bereits';
        SET NCOUNT = select Count(*) from "Namen2" where "Nachname" = NEWROW."Nachname" AND "Vorname" = NEWROW."Vorname";
        IF NCOUNT > 0 THEN SIGNAL SQLSTATE'45000'
            SET MESSAGE_TEXT=ERROR_TEXT;
        END IF;
    END
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Zeichenkette als Default einer Spalte

Beitrag von Freischreiber » Mo 29. Dez 2014, 17:28

Danke, aber soviel Komfort ist gar nicht nötig. Mit den Fehlermeldungen aus der Datenbank komme ich inzwischen zurecht... aber beim Probieren sehe ich gerade eine andere: Wenn Vorname oder Nachname leer ist, ist die zusammengesetzte Zeichenkette nach diesen seltsamen Konkatenierungsregeln auch Null, und kann nicht in das Primärfeld eingefügt werden. Dann besser irgendwas mit IFNULL?

...GENERATED ALWAYS AS(IFNULL("Nachname"||', ', '')|| (IFNULL("Vorname", '')) PRIMARY KEY)

Danke
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

F3K Total
* LO-Experte *
Beiträge: 2515
Registriert: So 10. Apr 2011, 10:10

Re: Zeichenkette als Default einer Spalte

Beitrag von F3K Total » Mo 29. Dez 2014, 17:32

Ja, oder

Code: Alles auswählen

COALESCE()
R
Windows 11: AOO, LO Linux Mint: AOO, LO

Freischreiber
* LO-Experte *
Beiträge: 866
Registriert: Fr 28. Mär 2014, 10:41

Re: Zeichenkette als Default einer Spalte

Beitrag von Freischreiber » Sa 3. Jan 2015, 09:21

So, oder?

Code: Alles auswählen

...GENERATED ALWAYS AS (COALESCE(("Nachname"||', '),'') || (COALESCE("Vorname", '')) PRIMARY KEY)
Gutes Neues Jahr
Freischreiber

:idea: Achte auf die dritte Ziffer: Libre Office 25.2.0.3 = Ärger ist vorprogrammiert.
Lesenswert: https://wiki.documentfoundation.org/ReleasePlan
Freischreiber nutzt seit 1/2025 LibreOffice 7.2.7.2 unter Windows 11 und SplitDB mit HSQL 2.7.4.

F3K Total
* LO-Experte *
Beiträge: 2515
Registriert: So 10. Apr 2011, 10:10

Re: Zeichenkette als Default einer Spalte

Beitrag von F3K Total » Sa 3. Jan 2015, 12:15

Wenn der Nachname immer vorhanden ist, würde ich das Komma an den Vornamen hängen:

Code: Alles auswählen

CREATE CACHED TABLE "Namen"("Nachname" VARCHAR(50),"Vorname" VARCHAR(50),"zusammen" VARCHAR(100) GENERATED ALWAYS AS("Nachname"||COALESCE(', '||"Vorname",'')) PRIMARY KEY)
R
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen:
Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das laufende.
Einfach per Kreditkarte oder PayPal. Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.



❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten