sql >> Databáze >  >> RDS >> Sqlserver

Opakování přes sadu záznamů v SQL Server

Měli byste to udělat v několika příkazech bez použití kurzoru nebo jiného procedurálního kódu. Jen se ujistěte, že je to vše v jedné transakci:

BEGIN TRANSACTION

INSERT INTO crrsql.dbo.AR_Transactions (
    cashier_id,
    cust_num,
    balance,
    transaction_date)
SELECT
    100199,
    cust_num,
    -acct_balance,
    DATEADD(MINUTE, -30, current_date)
FROM crrsql.dbo.Customers
WHERE acct_balance <> 0

UPDATE crrsql.dbo.Customers SET acct_balance = 0 WHERE acct_balance <> 0

COMMIT TRANSACTION

Samozřejmě přidejte správné zpracování chyb a nezapomeňte to nejprve otestovat.

Také jsem mírně pozměnil některé názvy tabulek a sloupců. Nechci se pouštět do toho, které konkrétní konvence pojmenování jsou lepší než jiné, ale alespoň být konzistentní. Pokud budete používat podtržítka, použijte je. Pokud místo toho použijete notaci velbloudího hřbetu, použijte ji, ale nemíchejte je. Totéž platí pro názvy tabulek v množném a jednotném čísle.



  1. Snížení rychlosti INSERT/UPDATE na vysoké úrovni Postgresu?

  2. FATAL:ověření hesla selhalo pro uživatele postgres (postgresql 11 s pgAdmin 4)

  3. Periodic InvalidCastException a Serveru se nepodařilo obnovit transakci s Linq

  4. Jetty 7 + MySQL Config [java.lang.ClassNotFoundException:org.mortbay.jetty.webapp.WebAppContext]