Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Цикъл върху набор от записи в SQL Server

Трябва да можете да направите това с няколко израза без използването на курсор или друг процедурен код. Просто се уверете, че всичко е в една транзакция:

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

Разбира се, добавете подходящо обработване на грешки и не забравяйте да тествате това първо.

Освен това леко промених някои от имената на вашите таблици и колони. Не искам да навлизам в това кои конкретни конвенции за именуване са по-добри от други, но поне поне да бъда постоянен. Ако ще използвате долни черти, използвайте ги. Ако вместо това ще използвате нотация с камила, тогава използвайте това, но не ги смесвайте. Същото важи за имена на таблици в множествено срещу единствено число.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Основи на дневника на транзакциите на SQL Server

  2. Sql Server какво да направите, за да направите ключ за съпоставяне от стойност на низ

  3. Как да извлечете данни от xml колона в sql 2008

  4. 2 начина за връщане на списък със свързани сървъри в SQL Server с помощта на T-SQL

  5. Какво е уникално ограничение в SQL Server - SQL Server / TSQL урок, част 95