3>
4>
5> CREATE TABLE authors(
6> au_id varchar(11),
7> au_lname varchar(40) NOT NULL,
8> au_fname varchar(20) NOT NULL,
9> phone char(12) NOT NULL DEFAULT ('UNKNOWN'),
10> address varchar(40) NULL,
11> city varchar(20) NULL,
12> state char(2) NULL,
13> zip char(5) NULL,
14> contract bit NOT NULL
15> )
16> GO
1> insert authors values('1', 'Joe', 'Abra', '111 111-1111', '6 St.', 'Berkeley', 'CA', '11111', 1)
2> insert authors values('2', 'Jack', 'Majo', '222 222-2222', '3 St.', 'Oakland' , 'CA', '22222', 1)
3> insert authors values('3', 'Pink', 'Cherry', '333 333-3333', '5 Ln.', 'Vancouver', 'BC', '33333', 1)
4> insert authors values('4', 'Blue', 'Albert', '444 444-4444', '7 Av.', 'Vancouver', 'BC', '44444', 1)
5> insert authors values('5', 'Red', 'Anne', '555 555-5555', '6 Av.', 'Regina', 'SK', '55555', 1)
6> insert authors values('6', 'Black', 'Michel', '666 666-6666', '3 Pl.', 'Regina', 'SK', '66666', 1)
7> insert authors values('7', 'White', 'Sylvia', '777 777-7777', '1 Pl.', 'Rockville', 'MD', '77777', 1)
8> insert authors values('8', 'Yellow','Heather','888 888-8888', '3 Pu', 'Vacaville', 'CA', '88888', 0)
9> insert authors values('9', 'Gold', 'Dep', '999 999-9999', '5 Av.', 'Oakland', 'CA', '99999', 0)
10> insert authors values('10', 'Siler', 'Dean', '000 000-0000', '4 Av.', 'Oakland', 'CA', '00000', 1)
11> GO
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
(1 rows affected)
1>
2>
3> ALTER TABLE authors
4> ADD account VARCHAR(10) NULL
5> GO
1> CREATE TABLE bank
2> (
3> account VARCHAR(10) NOT NULL PRIMARY KEY,
4> name VARCHAR(50) NOT NULL
5> )
6> GO
1> CREATE TABLE brokerage
2> (
3> account VARCHAR(10) NOT NULL PRIMARY KEY,
4> name VARCHAR(50) NOT NULL
5> )
6> GO
1> INSERT bank VALUES ('ABC', 'First Bank')
2> INSERT bank VALUES ('DEF', 'Second Bank')
3> INSERT bank VALUES ('XYZ', 'Third Bank')
4> GO
(1 rows affected)
(1 rows affected)
(1 rows affected)
1> INSERT brokerage VALUES ('123', 'First Broker')
2> INSERT brokerage VALUES ('456', 'Second Broker')
3> INSERT brokerage VALUES ('987', 'Third Broker')
4> GO
(1 rows affected)
(1 rows affected)
(1 rows affected)
1> sp_addmessage 56000, 10, 'Attempt to insert or update an invalid account.'
2> GO
1>
2>
3> CREATE TRIGGER trAuthors_InsUpd ON Authors
4> FOR UPDATE
5> AS
6> DECLARE @intRowCount int
7> SELECT @intRowCount = @@RowCount
8> IF @intRowCount > 0
9> BEGIN
10> IF (NOT EXISTS
11> (
12> SELECT account FROM bank WHERE account IN
13> (SELECT account FROM inserted)
14> UNION
15> SELECT account FROM brokerage WHERE account IN
16> (SELECT account FROM inserted)
17> )
18> )
19> BEGIN
20> RAISERROR(56000, 10, 1)
21> ROLLBACK TRANSACTION
22> RETURN
23> END
24> END
25> GO
1>
2> drop TRIGGER trAuthors_InsUpd;
3> drop table authors;
4> drop table bank;
5> drop table brokerage;
6> GO