INSERT IN mehrere Tabellen mit einem einzigen SQL-Anweisung, die Erhaltung der AutoWert

Ich habe zwei Tabellen.

Payments besteht aus einem AutoWert-Feld - PaymentID. `

PaymentsMain enthält zwei Felder - MainID, und PaymentID. Es kam zu Payments auf PaymentsMain.PaymentID = Payments.PaymentID.

Wie kann ich stecken Sie einen einzigen Wert in PaymentsMain.MainID, und haben einen neuen entsprechenden Satz Hinzugefügt, um Payments mit dem AutoWert berechnet in Payments.PaymentID, und dass die berechneten AutoWert als der Wert für `PaymentsMain.PaymentID'?

Ich denke, das ist möglich, wenn ich manuell generieren, die PaymentID - irgendeine Art von Laufenden Summe auf der Grundlage der MainIDs Hinzugefügt, um die anfängliche maximale Wert der PaymentID, aber ich Frage mich, ob dies durchgeführt werden, indem die Autonumbers allein.

Bearbeiten

Die Beziehungen sind wie folgt:INSERT IN mehrere Tabellen mit einem einzigen SQL-Anweisung, die Erhaltung der AutoWert

Bearbeiten

Wenn es möglich ist, um anzugeben, dass der Zugriff einfügen sollte, die DEFAULT Wert für die PaymentID wäre, würde das auch funktionieren.

  • Einfügen in mehrere Tabellen in einer einzelnen select-Anweisung, müssen Sie eine gespeicherte Prozedur.
  • In ms access, müssen Sie den code dieser sich in vba (oder ähnlich). Sie haben, um zu simulieren eine "Transaktion" - wird nicht perfekt sein, sollte aber Recht robust.
  • Hat Zugriff auf den support SPs?
  • Bitte zeigen Sie Ihre create-table-Anweisungen mit der alle Fremdschlüssel.
  • Access keine stored procedures oder Triggern. Access client-Seite VB-Module.
  • Ich war ursprünglich mit DAO für diese. Dies ist Teil einer HTA-Anwendung, die eine Verbindung zu der Datenbank über DAO, und es endete als zu viele verbindungen zur Datenbank zu handhaben.
  • Verwendete ich zunächst den designer. Gibt es einen gleichwertigen Zugang zu MySQL SHOW TABLES oder dergleichen?
  • Es klingt wie das, was Sie eigentlich wollen, ist ein INSERT-trigger auf einem der Tische.
  • Gehen Sie auf das Fenster Beziehungen, und Sie können Sie beschreiben. Sie werden wahrscheinlich haben, zum erstellen der create table-Anweisungen sich von der GUI-Darstellung der Beziehungen. Ich denke, dass der Zugriff nicht über einen Weg zu erzeugen, die Anweisung als SQL Server und andere Datenbank-engines zu tun.
  • Und Access pre-2010 nicht löst entweder.
  • Zahlungen zu sein scheint eine unnötige Tabelle. Es dient keinem Zweck.
  • Du hast Recht. Es ist es für die "historische Gründe" und ich habe nicht die Zeit jetzt zu gehen Sie durch die gesamte app und entfernen Sie es.
  • Sie hat nicht erwähnt, welche version von Access Sie verwenden. Ist es etwas früher als 2010?
  • Die Datenbank muss, um kompatibel zu bleiben mit früheren Versionen von Access.
  • Ohne Trigger, das kann nicht getan werden, ist eine einzelne SQL-Anweisung, zumindest nicht, dass ich sehen kann.
  • Spitz will, dass ein einfügen in die untergeordnete Tabelle (PaymentsMain) erstellen Sie die übergeordnete Tabelle Zeile bei den Zahlungen (wenn es nicht bereits vorhanden ist). Aber wegen der foreign-key-Beziehung, Zahlungen Zeile muss vorhanden sein, BEVOR PaymentsMain Zeile erstellt werden können. Dieses Durcheinander müsste getan werden, die in VB code in Access. Access-SQL kann es nicht. Als sasfrog oben angegeben.
  • Wenn Zahlungen ist otiose, und ist nicht in Abfragen verwendet, die fk-Beziehung entfernt werden konnte, und Zahlungen könnten ignoriert werden.

InformationsquelleAutor Zev Spitz | 2013-03-03
Schreibe einen Kommentar