SQL Çoklu Insert
Merhaba,
Aşağıdaki gibi bir insert kodum var, aynı anda aynı verileri bir başka tabloya kopyasını atmak istiyorum. Tüm alanlar aynı sadece tablo isimleri {acct_table1} ve {acct2_table1} nasıl yapabilirim bu işlemi ?
accounting_start_query = "
INSERT INTO ${acct_table1}
(acctsessionid, acctuniqueid, username,
realm, nasipaddress, nasportid,
nasporttype, acctstarttime, acctstoptime,
acctsessiontime, acctauthentic, connectinfo_start,
connectinfo_stop, acctinputoctets, acctoutputoctets,
calledstationid, callingstationid, acctterminatecause,
servicetype, framedprotocol, framedipaddress,
acctstartdelay, acctstopdelay, xascendsessionsvrkey)
VALUES
('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}',
'%{SQL-User-Name}',
'%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}',
'%{NAS-Port-Type}', '%S', NULL,
'0', '%{Acct-Authentic}', '%{Connect-Info}',
'', '0', '0',
'%{Called-Station-Id}', '%{Calling-Station-Id}', '',
'%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}',
'%{%{Acct-Delay-Time}:-0}', '0', '%{X-Ascend-Session-Svr-Key}')"
Php tagını seçtiğin için bir yöntem söylüyorum recursive fonksiyon mantığını kullan sorguyu gönder değer olarak 2 inci parametre de dizi içinde tablo isimleri gir acct_table1, acct_table2 diye 2 parametredeki değer sayısı kadar aynı fonksiyonu döndür her döngü de diğer tablo adını döndür. Örneğin;
function insert_recursive($sorgu,$array = []){
$tabloadi = array_shift($array);
$insertislemi = query('INSERT INTO '.$tabloadi.' '.$sorgu);
if(count($array) > 1){
insert_recursive($sorgu,$array);
}
}
$sorgu = "(acctsessionid, acctuniqueid, username,
realm, nasipaddress, nasportid,
nasporttype, acctstarttime, acctstoptime,
acctsessiontime, acctauthentic, connectinfo_start,
connectinfo_stop, acctinputoctets, acctoutputoctets,
calledstationid, callingstationid, acctterminatecause,
servicetype, framedprotocol, framedipaddress,
acctstartdelay, acctstopdelay, xascendsessionsvrkey)
VALUES
('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}',
'%{SQL-User-Name}',
'%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}',
'%{NAS-Port-Type}', '%S', NULL,
'0', '%{Acct-Authentic}', '%{Connect-Info}',
'', '0', '0',
'%{Called-Station-Id}', '%{Calling-Station-Id}', '',
'%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}',
'%{%{Acct-Delay-Time}:-0}', '0', '%{X-Ascend-Session-Svr-Key}')";
insert_recursive($sorgu,["acct_table1","acct2_table1"]);
Tabi bu örnek basit bir örnek içinde kontrol yok sorgu yerine gelmez ise işlem tamanınca dönecek cevap gibi şeyler yok mantığı anlaman için basit bir örnek verdim.