Announcement

Collapse
No announcement yet.

Constraint (oder Trigger), um Anzahl von gleichen IDs zu überprüfen

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

  • Constraint (oder Trigger), um Anzahl von gleichen IDs zu überprüfen

    Hallo zusammen.

    Ich habe eine Tabelle, in der einer ID (natürlich kein PrimaryKey) unterschiedliche andere IDs zugewiesen werden können. Das Problem ist, dass diese Zuweisungen nicht unique sind. Es ist also möglich (und so gewollt), dass der Datensatz "1-100-200" mehr als einmal vorkommen kann.
    Allerdings darf eine ID (im Beispiel die "1") nur maximal vier mal in der Tabelle vorkommen.

    Wie könnte der Constraint (oder Trigger) aussehen, um dies auf der DB-Seite sicherzustellen?

    Vielen Dank schon mal...
    Snowghost

    PS: Die DB: Oracle 8i

  • #2
    Hallo,

    <PRE>
    CREATE OR REPLACE TRIGGER aiu_table_a AFTER INSERT OR UPDATE ON table_a FOR EACH ROW
    DECLARE
    i_count NUMBER;
    BEGIN

    SELECT COUNT(id) INTO i_count
    FROM table_a
    WHERE id = 1;
    IF i_count > 4 THEN
    RAISE_APPLICATION_ERROR(-22222, 'ID 1 mehr als 4 mal verwendet!');
    END;

    END;
    </PRE>

    Unschoen ist allerdings, dass die ID 1 hier fest codiert steht. Falls du mehrere IDs mit verschiedenen Anzahlen pruefen willst, sollte man die IDs und die maximal erlaubte Anzahl in einer eigenen Tabelle ablegen und diese zur Laufzeit selektieren. Das Ganze dann in einer Schleife (CURSOR). Ist ein wenig komplizierter, aber nicht viel.

    Den Application_ERROR kannst du frei definieren. Den Text sowieso, die Nummer muss unter den von ORACLE-Nummern sein, also kleiner als -20000 . Die Nummer kannst du dann auch in anderen Programmen abfragen und eine entsprechende Fehlerbehandlung starten.

    Gruss

    Stefan Fran

    Comment


    • #3
      Super, danke!
      Werde ich gleich mal ausprobieren

      Comment

      Working...
      X