этот код желает, чтобы при обновлении таблицы Account данные вставлялись в историю таблицы - PullRequest
0 голосов
/ 27 февраля 2020

это две таблицы

CREATE TABLE Account 
      (A_ID INT  , C_Name VARCHAR(30),Balance INT)

CREATE TABLE History 
(A_ID INT, C_Name NVARCHAR(30),New_Balance INT,DB_User NVARCHAR(30),Type_Of_Transaction 
 NVARCHAR(10),Date1 DATE)

триггер

GO
CREATE TRIGGER CONCUSSION ON Account
AFTER UPDATE 
AS
BEGIN
DECLARE @ID INT /* save last record has been inserted */
DECLARE @Current_balance INT
DECLARE @Old_balance INT
DECLARE @Type NVARCHAR(10)

SELECT * INTO #TempTable FROM inserted
SELECT TOP 1 @ID=A_ID FROM #TempTable       
INSERT INTO History (A_ID ,C_Name , New_Balance)  
SELECT * FROM Account
WHERE A_ID=@ID

/ * копирование всей информации из таблицы счетов в историю * /

UPDATE History 
SET DB_User=CURRENT_USER,Date1=GETDATE()
WHERE A_ID=@ID

SELECT * INTO #TempTable1 FROM deleted
SELECT TOP 1 @Old_balance=Balance FROM #TempTable1 

/ сохранить старый баланс в @ New_balance /

SELECT TOP 1 @Current_balance=Balance FROM #TempTable

/ для сравнения между старым и текущим балансом, чтобы установить @type для депозита или для снятия /

IF @Current_balance>@Old_balance
SET @Type='Deposit'

IF @Current_balance<@Old_balance
SET @Type='Withdrawal'

UPDATE Top (1) History 
SET Type_Of_Transaction=@Type 
WHERE New_Balance=@Current_balance

END


INSERT INTO Account (A_ID , C_Name ,Balance ) VALUES (101,'Saleh',10000)

UPDATE Account
 SET  Balance=8000 
WHERE A_ID =101

UPDATE Account
SET  Balance=18000
WHERE A_ID =101



UPDATE Account
SET  Balance=8000 
WHERE A_ID =101

вот в чем проблема

...