/*drop all the tables*/
use fall97_331
drop table PROJECTIONS
drop table P_Audit
go

/*create a PROJECTIONS table*/
use fall97_331
CREATE TABLE PROJECTIONS 
(    PROJECTION_ID   INT,
     PROJECTION_NAME INT,
     PROJECTION_TYPE INT,                                          
     SPHEROID_CODE   INT,
     PROJECTION_UOM  INT,
     ZONE_CODE       INT,
   )	
go

/*insert all the data into PROJECTIONS first*/
INSERT INTO PROJECTIONS VALUES (1, 1, 12, 1, 1, 1)
INSERT INTO PROJECTIONS VALUES (2, 1, 10, 1, 1, 1)
INSERT INTO PROJECTIONS VALUES (3, 1, 15, 1, 1, 1)
INSERT INTO PROJECTIONS VALUES (4, 1, 17, 1, 1, 1)
INSERT INTO PROJECTIONS VALUES (5, 1, 18, 1, 1, 1)
go

/*create a P_Audit table*/
use fall97_331
CREATE TABLE P_Audit (
	PROJECTION_ID   INT,
        PROJECTION_NAME INT,
        PROJECTION_TYPE INT,
        SPHEROID_CODE   INT,
        PROJECTION_UOM  INT,
        ZONE_CODE       INT,
        When_Changed    DATETIME, 
        PRIMARY KEY  (PROJECTION_ID, When_Changed)
)
go

/*create a DALETE trigger*/
CREATE TRIGGER Delete_PROJECTIONS
ON PROJECTIONS
FOR DELETE
AS
INSERT P_Audit
SELECT*,getdate()
FROM deleted
go

/*create a UPDATE trigger*/
CREATE TRIGGER Update_PROJECTIONS
ON PROJECTIONS
FOR UPDATE
AS
INSERT P_Audit
SELECT*,getdate()
FROM deleted
go

/*delete and update the data*/
DELETE FROM PROJECTIONS WHERE PROJECTION_ID=5 
UPDATE P_Audit SET When_Changed='02/3/1996' WHERE PROJECTION_ID=5 

UPDATE PROJECTIONS SET PROJECTION_TYPE=13 WHERE PROJECTION_ID=2
UPDATE P_Audit SET When_Changed='3/20/1996' WHERE PROJECTION_ID=2

UPDATE PROJECTIONS SET PROJECTION_TYPE=11 WHERE PROJECTION_ID=3
UPDATE P_Audit SET When_Changed='5/28/1996' WHERE PROJECTION_ID=3

UPDATE PROJECTIONS SET PROJECTION_TYPE=14 WHERE PROJECTION_ID=2
UPDATE P_Audit SET When_Changed='6/17/1996' 
WHERE PROJECTION_ID=2  AND
     (When_Changed=(SELECT MAX(When_Changed) FROM P_Audit WHERE PROJECTION_ID=2))

DELETE FROM PROJECTIONS WHERE PROJECTION_ID=4 
UPDATE P_Audit SET When_Changed='07/12/1996' WHERE PROJECTION_ID=4 

/*query PROJECTIONS table*/
print""
print"PROJECTIONS table"
SELECT PROJECTION_ID,PROJECTION_TYPE  
FROM PROJECTIONS

/*query P_Audit table*/
print""
print"P_Audit table"
SELECT PROJECTION_ID,PROJECTION_TYPE,When_Changed=convert(char,When_Changed,101)
FROM P_Audit
ORDER BY When_Changed

go

drop trigger Delete_PROJECTIONS
drop trigger Update_PROJECTIONS
go
