Announcement

Collapse
No announcement yet.

verschiedene Arten von Aufträgen in einer Tabelle mit eigenen Identities

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

  • verschiedene Arten von Aufträgen in einer Tabelle mit eigenen Identities

    Hallo,
    ich habe eine Tabelle mit Aufträgen, inzwischen soll das System aber auch für andere Arten von Aufträgen genutzt werden, was durch das Einfügen einer Auftragsart (int) gelöst wurde.
    Mein Problem ist jetzt das ich gerne jeder Art von Auftrag eine eigene fortlaufende Nummer geben würde. (Am besten noch mit einem Suffix zb T-00001).

    Ich habe mich mit einem Kollegen darüber unterhalten und er meinte ich solle einen "Schlüssel Kreis" einrichten - also eine extra Tabelle für diese fortlaufenden Nummern... aber das Einzige, womit ich bisher weitergekommen bin war eine extra Tabelle mit einer id als einziger Spalte, die mir eine fortlaufende Nummer gibt, die ich in der Auftragstabelle als Fremdschlüssel eintrage.

    Eine andere Art der Lösung wäre unter Umständen das Erstellen von Aufträgen über Procedures... dann könnte ich mir die letzte id über ein Select holen.
    Ich bin mir noch nicht im klaren, wie ich das Problem am Besten angehe, bin für alle Tips und Tricks zu haben.

    Gruß Nils

  • #2
    Eine Möglichkeit wäre es, das über einen INSTEAD-OF-Trigger erledigen zu lassen. Der Vorteil dabei ist, dass das Insert zunächst abgefangen wird und die neuen Datensätze im Trigger in der Tabelle "inserted' zu finden sind. Diese Tabelle kann der Trigger durchlesen, dabei die entsprechende Nummer generieren und damit dann das entgültige Insert ausführen.
    Der große Vorteil: funktioniert immer, egal wer mit welcher Applikation ein Insert macht.
    Der Nachteil: geht etwas auf die Performance
    Aufpassen: da ein Trigger nur am Schluss einer Transaktion aufgerufen wird, können in der "inserted" auch mehrere Records drinnen stehen, die dann der Reihe nach abgearbeitet werden müssen - da wird wahrscheinlich ein Cursor benötigt.

    Aber ich würde mir gut überlegen, mit "Nummernkreisen" zu arbeiten und deswegen die fortlaufenden Nummern selber berechnen zu müssen. Was spricht dagegen ein IDENTITY über alle Aufträge zu legen?


    bye,
    Helmut

    Comment


    • #3
      Ja, den Instead-Of-Trigger benutze ich schon an einer anderen Stelle, das könnte gehen.

      Ich habe im Moment eine Identity für alle Aufträge, aber ich ersetze durch meine Anwendung ein bestehendes System - und das alte System hat mit T-Aufträgen und IC-Aufträgen gearbeitet, die jeweils unterschiedliche Nummernkreise hatten.
      Wenn unsere Rechnungsabteilung jetzt diese unterschiedlichen Aufträge in verschiedenen Ordnern abheften entstehen zwischen den Nummern natürlich Lücken. Das gilt es jetzt zu verhindern um die Übersichtlichkeit zu verbessern.

      Ich hatte gehofft eine einigermassen simple Lösung für dieses Problem zu finden... ansonsten würde ich über den instead-of trigger die generierte id aus einer von mehreren tabellen nehmen, die jeweils nur eine id führen, was ich albern finde.

      Gruß, Nils

      Comment


      • #4
        Ich hatte eher daran gedacht, dass der Trigger aufgrund der bestehenden Aufträge die nächste freie Nummer bestimmt und verwendet und nicht, dass der dafür noch zusätzliche Tabellen für diese Nummernverwaltung braucht.

        bye,
        Helmut

        Comment

        Working...
        X