9> create table Billings (
10> BillingID INTEGER,
11> BankerID INTEGER,
12> BillingNumber INTEGER,
13> BillingDate datetime,
14> BillingTotal INTEGER,
15> TermsID INTEGER,
16> BillingDueDate datetime ,
17> PaymentTotal INTEGER,
18> CreditTotal INTEGER
19>
20> );
21> GO
1>
2> INSERT INTO Billings VALUES (1,1, 1, '2005-01-22', 165, 1,'2005-04-22',123,321);
3> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (2,2, 2, '2001-02-21', 165, 1,'2002-02-22',123,321.);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (3,3, 3, '2003-05-02', 165, 1,'2005-04-12',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (4,4, 4, '1999-03-12', 165, 1,'2005-04-18',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (5,5, 5, '2000-04-23', 165, 1,'2005-04-17',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (6,6, 6, '2001-06-14', 165, 1,'2005-04-18',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (7,7, 7, '2002-07-15', 165, 1,'2005-04-19',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (8,8, 8, '2003-08-16', 165, 1,'2005-04-20',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (9,9, 9, '2004-09-17', 165, 1,'2005-04-21',123,321);
2> GO
(1 rows affected)
1> INSERT INTO Billings VALUES (0,0, 0, '2005-10-18', 165, 1,'2005-04-22',123,321);
2> GO
(1 rows affected)
1>
2>
3> create table Bankers(
4> BankerID Integer,
5> BankerName VARCHAR(20),
6> BankerContactLName VARCHAR(20),
7> BankerContactFName VARCHAR(20),
8> BankerCity VARCHAR(20),
9> BankerState VARCHAR(20),
10> BankerZipCode VARCHAR(20),
11> BankerPhone VARCHAR(20)
12> )
13> GO
1>
2> insert into Bankers values (1, 'ABC Inc.','Joe','Smith','Vancouver','BC','11111','111-111-1111');
3> GO
(1 rows affected)
1> insert into Bankers values (2, 'DEF Inc.','Red','Rice', 'New York', 'DE','22222','222-222-2222');
2> GO
(1 rows affected)
1> insert into Bankers values (3, 'HJI Inc.','Kit','Cat', 'Paris', 'CA','33333','333-333-3333');
2> GO
(1 rows affected)
1> insert into Bankers values (4, 'QWE Inc.','Git','Black','Regina', 'ER','44444','444-444-4444');
2> GO
(1 rows affected)
1> insert into Bankers values (5, 'RTY Inc.','Wil','Lee', 'Toronto', 'YU','55555','555-555-5555');
2> GO
(1 rows affected)
1> insert into Bankers values (6, 'YUI Inc.','Ted','Larry','Calgary', 'TY','66666','666-666-6666');
2> GO
(1 rows affected)
1> insert into Bankers values (7, 'OIP Inc.','Yam','Act', 'San Franc','FG','77777','777-777-7777');
2> GO
(1 rows affected)
1> insert into Bankers values (8, 'SAD Inc.','Hit','Eat', 'Orland', 'PO','88888','888-888-8888');
2> GO
(1 rows affected)
1> insert into Bankers values (9, 'DFG Inc.','Sad','Lee', 'Wisler', 'PL','99999','999-999-9999');
2> GO
(1 rows affected)
1> insert into Bankers values (0, 'GHJ Inc.','Bit','Lee', 'Ticker', 'MN','00000','000-000-0000');
2> GO
(1 rows affected)
1>
2>
3>
4> CREATE TRIGGER Billings_UPDATE
5> ON Billings
6> AFTER UPDATE
7> AS
8> IF EXISTS
9> (SELECT *
10> FROM Deleted JOIN Billings
11> ON Deleted.BillingID = Billings.BillingID
12> WHERE Deleted.PaymentTotal <> Billings.PaymentTotal)
13> BEGIN
14> IF EXISTS
15> (SELECT *
16> FROM Billings JOIN
17> (SELECT BillingID, SUM(BillingLineItemAmount) AS SumOfBillings
18> FROM BillingLineItems
19> GROUP BY BillingID) AS LineItems
20> ON Billings.BillingID = LineItems.BillingID
21> WHERE (Billings.BillingTotal <> LineItems.SumOfBillings) AND
22> (LineItems.BillingID IN (SELECT BillingID FROM Deleted)))
23> BEGIN
24> RAISERROR('Correct line item amounts before posting payment.',1,1)
25> ROLLBACK TRAN
26> END
27> END
28> GO
1>
2> UPDATE Billings
3> SET PaymentTotal = 662
4> WHERE BillingID = 100
5> GO
(0 rows affected)
1>
2> drop TRIGGER Billings_UPDATE;
3> GO
1>
2>
3> drop table Bankers;
4> GO
1>
2>
3> drop table Billings;
4> GO