1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

[Frage] Trigger? - Andere Lösungsmöglichkeit/en? (Functions?)

Dieses Thema im Forum "PostgreSQL" wurde erstellt von Kampfgummibaerlie, 10 September 2017.

  1. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Trigger machen mir ehrlich gesagt ein wenig Angst, ich weiß jedoch nicht, warum, ich glaube, ich sollte mal einen Tag nur Trigger programmieren, und dann geht das eh locker ^^

    Ich nutze folgenden Code:
    Code:
    select count(maschinen_id), maschinen_name, maschinen_mietpreis from 
    maschinen group by maschinen_mietpreis, maschinen_name
    except select maschinen_id, maschinen_name, mietpreis from 
    vermietungen where mietzeit @> now()::timestamp
    
    Mein Problem wäre (wo ich glaube, auch das Problem geunden zu haben), dass er mir alle 16 eingetragenen maschinen anzeigt.

    Meine erste Idee wäre, einfach mittels eines Triggers in die Tabelle Vermietungen den maschinen_namen sowie auch maschinen_mietpreis eintragen zu lassen, damit er die auch wirklich ausschließen kann. (Denke, er zeigt trotzdem alle an, weil er eben den Namen, beziehungsweise den Mietpreis nicht in Vermietungen findet und entsprechend eben die Maschine, weil sie eben nicht die gleichen Werte hat, wie die in der Tabelle vermietungen, auch nicht ausschließt.

    Meine zweite Idee wäre, wobei ich glaube, das Ganze mit Triggern professioneller zu lösen, dass ich mehrere Functions "mal eben" selecte, die auch voneinander abhängig sind, und "sozusagen" das selbe Resultat wie die Trigger bringen, jedoch nicht wirklich einfach zum Managen scheint ^^

    Außerdem würde ich enorm gerne das Ganze Thema meistern, weil es bisher schon jeden Tag auch Frust bringt, aber deutlich mehr Freude, wenns am Ende doch funktioniert.

    Beiwort: Warum ich mir Gedanken über sowas mache? Ich arbeite inzwischen schon ein wenig am herumprobieren für die Homepage, und wies scheint, kann PHP nicht wirklich so agieren, wie ich es gerne hätte. Da ich jeden Tag erneut aufwache, und mich in den Tag stürze, und jeden Abend, wenn ich ein anliegen habe, in >dieses< Forum schreibe, freue ich mich auch schon auf Morgen (Außer heute kommt noch eine Antwort, dann schlaf ich gut :D)

    Also, wie immer, euer strebsamer Bär :S
     
  2. akretschmer

    akretschmer Datenbank-Guru

    vermutlich weil Du diese hier nicht brauchst. Dein Select macht im ersten Teil ein count(id) und dann ein except select (id). Stelle Dir mal vor, die ID ist ein UUID, dann dann würde der count(id) zwar gehen und Du bekommt ein INT, dann kannst Du aber nicht weiter mit EXCEPT ein UUID arbeiten. Apfel, Birnen, habe ich Dir schon einmal erklärt.
     
  3. Kampfgummibaerlie

    Kampfgummibaerlie Datenbank-Guru

    Soda, nach einer Weile anderes erledigen, um Frust abzubauen, bin ich wiedermal hier, mit dem Willen, zu lernen.

    UUID = eindeutiger Schlüssel, oder so (Primary Key).
    Ich habe in der Zwischenzeit immer mal wieder reinprobiert, aber bisher nie zum glücklichen Ende gefunden, und ich packe einfach mal den Mut, offenbare meine Unfähigkeit der Öffentlichkeit, und Frage einfach, was ich mich gerade Frage.

    Also, ich sitze nach wie vor an diesem Problem, und mir wurde im PHP-Forum (auch schon eine Weile her) gesagt, dass es enorm "stillos" ist, wenn man Querys in der Homepage abfragt.

    Denke von daher, dass ich mit der PHP-Seite erst anfangen sollte, sobald alles in der Datenbank ablaufen kann, ohne einem entsprechendem Query in der PHP-Seite.
    Soll ich jetzt also für jeden Insert-Fall eine Function schreiben, genauso auch für Update- sowie auch Delete-Fälle?

    Aber ja, zurück zu diesem Thema, bevor ich von anderem Erzähle:
    Kannst du mir schnell ein entsprechendes Select-Query schreiben, bei diesen Voraussetzungen? (Schreibe ich schnell aus dem Kopf)
    1.: Eine Tabelle 1
    Code:
    create table table_1 (id serial, name text)
    
    2.: Eine Tabelle 2
    Code:
    create table table_2 (id serial, m_id integer, mietzeit tsrange)
    
    3.: Ein einfaches Insert-Script (2 mal ausführen):
    Code:
    insert into table_1(name) values('R2D2')
    
    4.: Ein einfaches Insert-Script (1 mal ausführen):
    Code:
    insert into table_2(m_id, mietzeit) values ('1', '(2017.01.01 08:00, 2020.01.01 23:55)')
    
    5.: >Mein Problempunkt< Ein select-script mit count, group by, und einem except......
    Problem 1: Verstehe ich deinen Satz richtig, er fängt bei jeder Reihe wieder von 0 an, und zählt die Zeile dazu, falls es ein Primary Key ist?
    Problem 2: *Frust frei rauslasse und rumheule* wieso? xD - weil, sobald ich die Namen counte, und jedoch in der except die id nehmen will (glaube ich), meint er, dass die Typen übereinstimmen müssen. Meine Idee (gerade eingefallen) wäre eine Funktion, welche wiederum den namen nach der gegebenen id nimmt, aber ich glaube, es ginge auch einfacher, wenn man das ganze auswendig kann ^^
    Problem 3: Ich habe mich oft mit den letzten Posts von dir beschäftigt, wurde aber nicht klüger daraus, ich meine, der Script wenn man ihn 1:1 so anwendet, funktioniert, aber irgendein Punkt glaube ich hat mir dabei gefehlt. (Ich glaube, keinen gefunden zu haben mit einem Group-By und Except - Script).

    Ist es möglich, sowas zu tun? Wenn ja, bitte ich um eine langsame, gefühlsame Erklärung in einer beruhigenden Stimme :D
    ANHANG:
    Statt einer Stimme, nehme ich auch gerne einfach einen Post.... :/ (Wäre auch überaus überrascht, wenn mir das Ganze jemand anders als Akretschmer schreiben würde, aber ja, Akretschmer muss ja auch was für seine Kinder tun, und ich glaube, mit mir als Küken freut er sich schon beinahe Tag für Tag, auf eine neue solche abstrakte und lächerlich einfache Frage....) *wiedermal traurig ins eck stelle*

    Warum ich mal wieder so einen ewigen Post schreibe? Ich glaube, weil der Punkt (wiedermal) da ist, wo ich aktzeptiere, dass ich doch nicht so mächtig in dem Thema bin, wie ich glaube, und immer wieder gerne plaudere. (Ich hoffe, damit niemanden zu stören, oder aufzuregen)
     
Die Seite wird geladen...

Diese Seite empfehlen