pears.phone

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

Telephone - fax - email etc

Column Type Null Default Comment
phoneid char(20) NOT NULL
phonetypeid char(20) NOT NULL
who char(2) NOT NULL
whoid char(20) NOT NULL
number char(200) NOT NULL
numberdigits char(200) NULL
numberdialable char(200) NULL
  • phoneid
Constraint Columns References Delete/update action
phonetype phonetypeid pears.phonetype (phonetypeid) NOT NULL;
  • No incoming foreign keys found.
Name Type Columns Detail
phone_whoid Index who, whoid
phone_idwho Index whoid, who
phone_number Index number
phone_digits Index numberdigits
phone_dialable Index numberdialable
Name Timing Event
lsm_phoneupdate before insert,update order 1
psHealthPhoneInsert after insert order 900
PhoneKeyWords after insert,update order 20
-- IQX database structure split by table
-- Source: IQXDatabaseStructure - with comments.sql
-- Table: "pears"."phone"
-- Table comment: Telephone - fax - email etc
-- Statement count: 13
 
CREATE TABLE "pears"."phone" (
    "phoneid"                        CHAR(20) NOT NULL
   ,"phonetypeid"                    CHAR(20) NOT NULL
   ,"who"                            CHAR(2) NOT NULL
   ,"whoid"                          CHAR(20) NOT NULL
   ,"number"                         CHAR(200) NOT NULL
   ,"numberdigits"                   CHAR(200) NULL COMPUTE ("pears"."digitsonly"("number"))
   ,"numberdialable"                 CHAR(200) NULL COMPUTE ("pears"."dialable"("number"))
   ,PRIMARY KEY ("phoneid" ASC) 
)
GO
 
 
COMMENT ON TABLE "pears"."phone" IS 
	'Telephone - fax - email etc'
GO
 
 
ALTER TABLE "pears"."phone"
    ADD NOT NULL FOREIGN KEY "phonetype" ("phonetypeid" ASC)
    REFERENCES "pears"."phonetype" ("phonetypeid")
GO
 
 
CREATE INDEX "phone_whoid" ON "pears"."phone"
    ( "who","whoid" )
GO
 
 
CREATE INDEX "phone_idwho" ON "pears"."phone"
    ( "whoid","who" )
GO
 
 
CREATE INDEX "phone_number" ON "pears"."phone"
    ( "number" )
GO
 
 
CREATE INDEX "phone_digits" ON "pears"."phone"
    ( "numberdigits" )
GO
 
 
CREATE INDEX "phone_dialable" ON "pears"."phone"
    ( "numberdialable" )
GO
 
 
CREATE TRIGGER "lsm_phoneupdate" BEFORE INSERT,UPDATE ORDER 1 ON
"pears"."phone"
REFERENCING NEW AS "np"
FOR each ROW
BEGIN
  DECLARE "spaycont" CHAR(20);
  DECLARE "saccont" CHAR(20);
  IF "np"."who" = 'P' THEN
    UPDATE "pay_employee" SET "transferbatch" = 0 WHERE "personid" = "np"."whoid" AND "transferbatch" <> 0;
    UPDATE "accordemployee" SET "transferbatch" = 0 WHERE "personid" = "np"."whoid"
  ELSE
    IF "np"."who" = 'C' THEN
      UPDATE "companyaccount" SET "transferbatch" = 0 WHERE "companyid" = "np"."whoid" AND "transferbatch" <> 0
    ELSE
      SELECT "ca"."timesheetcontact","ca"."accountscontact" INTO "spaycont","saccont" FROM "companyaccount" AS "ca" JOIN "employment" AS "emp"
          ON "emp"."companyid" = "ca"."companyid" WHERE "emp"."employmentid" = "np"."whoid";
      IF "np"."whoid" = "spaycont" OR "np"."whoid" = "saccont" THEN
        UPDATE "companyaccount" AS "ca" JOIN "employment" AS "emp" ON "emp"."companyid" = "ca"."companyid" SET "ca"."transferbatch" = 0
          WHERE "emp"."employmentid" = "np"."whoid" AND "transferbatch" <> 0
      END IF
    END IF
  END IF
END
GO
 
 
COMMENT TO PRESERVE FORMAT ON TRIGGER "pears"."phone"."lsm_phoneupdate" IS 
{CREATE TRIGGER lsm_phoneupdate 
 BEFORE INSERT,UPDATE ORDER 1 ON
pears.phone
REFERENCING NEW AS np
FOR each ROW
BEGIN
  DECLARE spaycont CHAR(20);
  DECLARE saccont CHAR(20);
  IF np.who = 'P' THEN
    UPDATE pay_employee SET transferbatch = 0 WHERE personid = np.whoid AND transferbatch <> 0;
    UPDATE accordemployee SET transferbatch = 0 WHERE personid = np.whoid
  ELSE
    IF np.who = 'C' THEN
      UPDATE companyaccount SET transferbatch = 0 WHERE companyid = np.whoid AND transferbatch <> 0
    ELSE
      SELECT ca.timesheetcontact,ca.accountscontact INTO spaycont,saccont FROM companyaccount AS ca JOIN employment AS emp ON
        emp.companyid = ca.companyid WHERE emp.employmentid = np.whoid;
      IF np.whoid = spaycont OR np.whoid = saccont THEN
        UPDATE companyaccount AS ca JOIN employment AS emp ON emp.companyid = ca.companyid SET ca.transferbatch = 0 WHERE
          emp.employmentid = np.whoid AND transferbatch <> 0
      END IF
    END IF
  END IF
END
}
GO
 
 
CREATE TRIGGER "psHealthPhoneInsert" after INSERT ORDER 900 ON
"pears"."phone"
REFERENCING NEW AS "new_rec"
FOR each ROW
WHEN("new_rec"."who" = 'P')
BEGIN
  CALL "psHealthUpdatePhone"("new_rec"."whoid","new_rec"."phonetypeid","new_rec"."number")
END
GO
 
 
CREATE TRIGGER "PhoneKeyWords" after INSERT,UPDATE ORDER 20 ON
"pears"."Phone"
REFERENCING NEW AS "NewRow"
FOR each ROW
BEGIN
  CASE "NewRow"."Who"
  WHEN 'P' THEN UPDATE "PersonKeyWords" SET "RefreshRequired" = 1 WHERE "PersonID" = "NewRow"."WhoID"
  WHEN 'C' THEN UPDATE "CompanyKeyWords" SET "RefreshRequired" = 1 WHERE "CompanyID" = "NewRow"."WhoID"
  WHEN 'CP' THEN UPDATE "CompanyKeyWords" SET "RefreshRequired" = 1 FROM "Company" KEY JOIN "Employment" WHERE "EmploymentID" = "NewRow"."WhoID" AND "CompanyKeyWords"."CompanyID" = "Company"."CompanyID"
  END CASE
END
GO
 
 
COMMENT TO PRESERVE FORMAT ON TRIGGER "pears"."phone"."PhoneKeyWords" IS 
{CREATE TRIGGER PhoneKeyWords 
after  INSERT, UPDATE  ORDER 20 ON 
   pears.Phone
  REFERENCING NEW AS NewRow 
 FOR each ROW
 BEGIN
 CASE NewRow.Who
   WHEN 'P'  THEN UPDATE PersonKeyWords SET RefreshRequired = 1 WHERE PersonID = NewRow.WhoID;
   WHEN 'C'  THEN UPDATE CompanyKeyWords SET RefreshRequired = 1 WHERE CompanyID = NewRow.WhoID;
   WHEN  'CP' THEN UPDATE CompanyKeyWords SET RefreshRequired = 1  FROM Company KEY JOIN Employment WHERE EmploymentID = NewRow.WhoID AND CompanyKeyWords.CompanyID = Company.CompanyID;
 END 
 END
}
GO
  • database/tables/pears_phone.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1