sql >> Databasteknik >  >> RDS >> Sqlserver

Slinga över en postuppsättning i SQL Server

Du bör kunna göra detta i ett par satser utan att använda en markör eller annan procedurkod. Se bara till att allt är i en transaktion:

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

Lägg naturligtvis till korrekt felhantering och se till att testa detta först.

Dessutom ändrade jag lite av dina tabell- och kolumnnamn. Jag vill inte gå in på vilka specifika namnkonventioner som är bättre än andra, men åtminstone var konsekvent. Om du ska använda understreck, använd dem. Om du ska använda kamelback-notation istället, använd det, men blanda inte dem. Detsamma gäller för plural kontra singular tabellnamn.



  1. PHP / MySQL bygga trädmeny

  2. REGEX för att välja n:te värde från en lista, vilket tillåter nollvärden

  3. Skapar en Postgresql-dump sekvenser som börjar med - eller efter - den sista nyckeln?

  4. Återställ en kopia av din databas