Frage

Hier ist mein Verfahren:

PROCEDURE add_values
AS
BEGIN

   INSERT INTO TABLE_A ...
   SELECT t.id, t.name FROM TABLE_C ("This selection will return multiple records")

END

Während es in TableA einfügt, würde ich Einsatz in einer anderen Tabelle (Tabelle B) für diesen bestimmten Datensatz wie die in tableA eingefügt wurde.

Die Spalten in TableA und TableB sind unterschiedlich. Ist es ratsam, vor dem Einsetzen in TableB eine Funktion aufzurufen? - Ich möchte sicher durchführen wird und setzt auf der Grundlage der ID in tableA eingefügt

War es hilfreich?

Lösung

Versuchen Sie, diese

Eingänge

declare @tblA table (id int,name varchar(20))
declare @tblB table (id int,name varchar(20))
declare @tblC table (id int identity,name varchar(20))
insert into @tblC 
    select 'name1' union all select 'name2' union all
    select 'name3' union all select 'name4' union all
    select 'name5' union all select 'name6' union all
    select 'name7' union all select 'name8' union all
    select 'name9' union all select 'name10' union all
    select 'name11' union all select 'name12' union all
    select 'name13' union all select 'name14' union all
    select 'name15' union all select 'name16' union all
    select 'name17' union all select 'name18' union all
    select 'name19' union all select 'name20' 

Abfrage

insert @tblA 
output INSERTED.id, INSERTED.Name
into @tblB 
select 
    id,name
from @tblC 
where id % 2 = 0

select * from @tblA
select * from @tblB

Ausgang: [Für beide Tabelle A & B]

id name

2   name2
4   name4
6   name6
8   name8
10  name10
12  name12
14  name14
16  name16
18  name18
20  name20

Im Grunde ich die Datensätze in TableA von TableC deren ids bin Einfügen sind sogar. Und dann von Output-Klausel mit den Werten von TableA zu TableB Einfügen

Weitere Informationen OUTPUT-Klausel

Hope dies macht Sinn

Andere Tipps

Sie können einen Trigger erstellen, es zu tun, wenn dies die einzige Möglichkeit ist, dass Sie Daten in die Tabelle einfügen. (Sonst wird es auf jedem Einsatz laufen)

oder Sie können auf einem Cursor durchlaufen, die Sie bei jedem Einsatz aus der Auswahl tun ermöglicht

( Cursor Beispiel

Die beste Technik hängt von den Einzelheiten Ihrer Tabellendefinitionen und den zugehörigen Abfragen. Auf der Grundlage der Informationen in Frage, vielleicht so etwas wie folgt aus:

CREATE PROCEDURE add_values
AS
BEGIN
  BEGIN TRANS
    INSERT INTO TableA
      SELECT id, name FROM TableC
    INSERT INTO TableB
      SELECT id, name FROM TableC
  COMMIT
END

In MySQL versuchen INSERT..SELECT, wie folgt aus:

INSERT INTO tableB SELECT * FROM tableA where id = LAST_INSERT_ID();

http: // dev .mysql.com / doc / refman / 5.0 / de / ansi-diff-select-in-table.html

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top