Announcement

Collapse
No announcement yet.

Problem mit Trigger

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit Trigger

    Hey, versuche einen Trigger zu schreiben um Automatich eine ID zu generieren. Leider spuckt er mir einen Error ich Tippe auf die Sub Select Abfrage.

    Hier mein Quellcode:
    Code:

    Code:
    DELIMITER #;
    CREATE TRIGGER bi_user_id
    BEFORE INSERT ON user
    FOR EACH ROW
    
    BEGIN
    DECLARE i,ie INTEGER DEFAULT 0;
    DECLARE leer CHAR(16) DEFAULT 'True';
    
    SELECT count(*) INTO i FROM user;
    SELECT ID INTO ie FROM user WHERE ID=(SELECT i);
    IF ie>0 THEN
    SELECT * FROM user;
    ELSE
    SELECT leer;
    END#
    Die Aktionen nach der IF Verzweigung müssen noch an passen und sind aktuell nur zu Test Zwecken so.

  • #2
    Man verwendet kein count, max oder was auch immer um eine ID zu generieren - das wird in einer Multiuserumgebung nicht funktionieren und ist zudem sehr unperformant.
    Verwende eine Sequence, ein AutoInc Feld oder eine Sysguid.

    Wegen dem Trigger: Ich vermute mal, das ein SELECT 1 nicht läuft. Zumindest in den mir bekannten Datenbanken ist das kein valides SQL.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Hallo,

      es gibt wohl nicht sehr viele DBMS. die innerhalb eines ROW-Triggers den Zugriff auf die gerade geänderte Tabelle gestatten.
      Und selbst wenn es gehen würde, wäre deine Funktionalität zur Ermittlung einer ID mehr als Fragwürdig. Es gibt, je nach DBMS, sehr viel sicherere Verfahren zur ID-Erzeugung. Z.B. Autoincrement, Sequenz, UID, etc.

      Gruß Falk

      Edit: Dim war wiedermal schneller...
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment

      Working...
      X