Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

insert mit select

Dieses Thema im Forum "Oracle" wurde erstellt von mullekular, 17 Juni 2013.

  1. mullekular

    mullekular Benutzer

    moin nochmal,

    ich möchte folgendes bewerkstelligen:

    Wenn ein User eine "Eingabe" macht und z.B. in ein Feld einen String eingibt,
    soll die DB beliebigen tabele gugn ob dieser String dort existiert und wenn ja, sich die dazugehörige ID ziehen und in die "Eingabe"tabelle schreiben.

    In meinem konkreten Fall ist es so:

    Ich habe eine Tabelle VogelArten mit VogelArten_ID und Deutscher_NAme;
    der User gibt nun eine (vogel)Beobachtung ein.
    er wird natürlich den Deutschen Namen bei der beobachtung eingeben.
    Dieser würde dann in der Tabelle (vogel)Beobachtungen stehen.

    ich möchte aber das dort die Arten_ID aus der Tabelle Arten steht.
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Ist zwar irgendwie von hinten durch die Brust, aber egal:

    Code:
    test=# create table vogelarten (id int primary key, deutscher_name text);
    NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "vogelarten_pkey" for table "vogelarten"
    CREATE TABLE
    test=*# copy vogelarten from stdin;
    Enter data to be copied followed by a newline.
    End with a backslash and a period on a line by itself.
    >> 1    amsel
    >> 2    meise
    >> 3    schnapsdrossel
    >> \.
    test=*# create table beobachtung (ts timestamp, vogel int references vogelarten);
    CREATE TABLE
    test=*# create table eingabe (vogel text);
    CREATE TABLE
    test=*# create or replace function lookup_vogel() returns trigger as $$begin insert into beobachtung select now(), id from vogelarten where deutscher_name = new.vogel; return new; end;$$language plpgsql;
    CREATE FUNCTION
    test=*# create trigger vogel_trigger after insert on eingabe for each row execute procedure lookup_vogel();
    CREATE TRIGGER
    test=*# insert into eingabe values ('spatz');
    INSERT 0 1
    test=*# insert into eingabe values ('schnapsdrossel');
    INSERT 0 1
    test=*# select * from beobachtung ;
                 ts             | vogel
    ----------------------------+-------
     2013-06-17 21:20:58.651938 |     3
    (1 row)
    
    Andreas
     
  3. mullekular

    mullekular Benutzer

    puh vielen dank. da muss ich ertmal drüber nachdenken. habe schon versucht eine prozedur zu schreiben. das wollte nicht. ich werde dieses jetzt mal umsetzen! und melde mich später nochmal. vielen dank erstmal.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden