1 | create trigger "Person Work update"
|
2 | instead of update
|
3 | on "Person Work"
|
4 | begin
|
5 | update "Person"
|
6 | set ID = new.ID, "Name First" = new."Name First", "Name Last" = new."Name Last"
|
7 | where ID = old.ID
|
8 | ;
|
9 | -- Company:
|
10 | insert into "Company" ("Name")
|
11 | select new."Company"
|
12 | where new."Company" not in (select Name from "Company")
|
13 | and new."Company" not null
|
14 | ;
|
15 | insert into "Person Company" ("ID", "Company")
|
16 | select
|
17 | new.ID
|
18 | , (select ID from "Company" where Name = new."Company")
|
19 | where new."Company" not null and old."Company" is null -- ie Company was blank but new value entered
|
20 | ;
|
21 | delete from "Person Company"
|
22 | where ID = old.ID
|
23 | and new."Company" is null and old."Company" not null -- ie Existing Company value deleted
|
24 | ;
|
25 | update "Person Company"
|
26 | set "Company" = (select ID from "Company" where Name = new."Company")
|
27 | where ID = new.ID
|
28 | and new."Company" not null and old."Company" is null -- ie Existing Company value changed
|
29 | ;
|
30 | -- Job Title:
|
31 | insert into "Job Title" ("Name")
|
32 | select new."Job Title"
|
33 | where new."Job Title" not in (select Name from "Job Title")
|
34 | and new."Job Title" not null
|
35 | ;
|
36 | insert into "Person Job Title" ("ID", "Job Title")
|
37 | select
|
38 | new.ID
|
39 | , (select ID from "Job Title" where Name = new."Job Title")
|
40 | where new."Job Title" not null and old."Job Title" is null -- ie Job Title was blank but new value entered
|
41 | ;
|
42 | delete from "Person Job Title"
|
43 | where ID = old.ID
|
44 | and new."Job Title" is null and old."Job Title" not null -- ie Existing Job Title value deleted
|
45 | ;
|
46 | update "Person Job Title"
|
47 | set "Job Title" = (select ID from "Job Title" where Name = new."Job Title")
|
48 | where ID = new.ID
|
49 | and new."Job Title" not null and old."Job Title" is null -- ie Existing Job Title value changed
|
50 | ;
|
51 | -- Email:
|
52 | update "Person Email"
|
53 | set "Email" = new."Email"
|
54 | where "Person" = new.ID and "Purpose" = (select ID from "Purpose" where Name = 'Work')
|
55 | and new."Email" not null and old."Email" not null -- ie changing an existing email address
|
56 | ;
|
57 | delete from "Person Email"
|
58 | where "Person" = new.ID and "Purpose" = (select ID from "Purpose" where Name = 'Work')
|
59 | and new."Email" is null and old."Email" not null -- ie deleting an existing email address
|
60 | ;
|
61 | insert into "Person Email" ("Person", "Email", "Purpose")
|
62 | select
|
63 | new.ID
|
64 | , new."Email"
|
65 | , (select ID from "Purpose" where Name = 'Work')
|
66 | where new."Email" not null and old."Email" is null -- adding a email address that didn't exist
|
67 | ;
|
68 | end
|
69 | ;
|