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 MainID
s 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:
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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Angesichts der folgenden:
INSERT
- Anweisung einer gespeicherten Abfrage.Der erste Schritt ist das erstellen einer gespeicherten Abfrage wie folgt (benannt
target
in diesem Fall):Dann berechnen Sie die maximale AutoWert aktuell in der Datenbank (in diesem Fall 1626).
Schließlich die
INSERT
- Abfrage:(Dies setzt Voraus, dass die Nummerierung ist fortlaufend, und nicht zufällig).