pears.DivisionAccess

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

Links Staff records to Divisions. Staff with no records have access to all Divisions.

Column Type Null Default Comment
divisionid char(20) NOT NULL
staffid char(20) NOT NULL
  • divisionid, staffid
Constraint Columns References Delete/update action
division divisionid pears.Division (divisionid) NOT NULL; ON DELETE CASCADE
staff staffid pears.staff (staffid) NOT NULL; ON DELETE CASCADE
  • No incoming foreign keys found.
  • No indexes found.
Name Timing Event
WPK_divisionaccess_DIVISION after insert,delete,update order 1
DivisionAccessInsertAudit after insert order 1
DivisionAccessDeleteAudit after delete order 1
-- IQX database structure split by table
-- Source: IQXDatabaseStructure - with comments.sql
-- Table: "pears"."DivisionAccess"
-- Table comment: Links Staff records to Divisions. Staff with no records have access to all Divisions.
-- Statement count: 10
 
CREATE TABLE "pears"."DivisionAccess" (
    "divisionid"                     CHAR(20) NOT NULL
   ,"staffid"                        CHAR(20) NOT NULL
   ,PRIMARY KEY ("divisionid" ASC,"staffid" ASC) 
)
GO
 
 
COMMENT ON TABLE "pears"."DivisionAccess" IS 
	'Links Staff records to Divisions. Staff with no records have access to all Divisions.'
GO
 
 
ALTER TABLE "pears"."DivisionAccess"
    ADD NOT NULL FOREIGN KEY "division" ("divisionid" ASC)
    REFERENCES "pears"."Division" ("divisionid")
    ON DELETE CASCADE
GO
 
 
ALTER TABLE "pears"."DivisionAccess"
    ADD NOT NULL FOREIGN KEY "staff" ("staffid" ASC)
    REFERENCES "pears"."staff" ("staffid")
    ON DELETE CASCADE
GO
 
 
CREATE TRIGGER "WPK_divisionaccess_DIVISION" after INSERT,DELETE,UPDATE ORDER 1 ON
"pears"."divisionaccess"
FOR each statement
BEGIN
  CALL "WPKTrackChange"('P','DIVISION')
END
GO
 
 
COMMENT TO PRESERVE FORMAT ON TRIGGER "pears"."DivisionAccess"."WPK_divisionaccess_DIVISION" IS 
{CREATE TRIGGER WPK_divisionaccess_DIVISION 
 after INSERT,DELETE,UPDATE ORDER 1 ON
divisionaccess
FOR each statement
BEGIN
  CALL WPKTrackChange('P','DIVISION')
END
}
GO
 
 
CREATE TRIGGER "DivisionAccessInsertAudit" after INSERT ORDER 1 ON
"pears"."DivisionAccess"
REFERENCING NEW AS "new_access"
FOR each ROW
WHEN(EXISTS(SELECT * FROM "AuditItems" WHERE "AreaName" = 'User' AND "AuditFlag" = 1 AND "ItemName" = 'Division Access'))
BEGIN
  DECLARE "RoleName" CHAR(50);
  DECLARE "StaffName" CHAR(25);
  SELECT "name" INTO "RoleName" FROM "division" WHERE "divisionid" = "new_access"."divisionid";
  SELECT "userid" INTO "StaffName" FROM "staff" WHERE "staffid" = "new_access"."staffid";
  CALL "AuditLog"('USER','',"string"("StaffName",' Added division ',"RoleName"),'','Added')
END
GO
 
 
COMMENT TO PRESERVE FORMAT ON TRIGGER "pears"."DivisionAccess"."DivisionAccessInsertAudit" IS 
{CREATE TRIGGER DivisionAccessInsertAudit 
 after INSERT ORDER 1 ON
DivisionAccess
REFERENCING NEW AS new_access
FOR each ROW
WHEN(EXISTS(SELECT * FROM AuditItems WHERE AreaName = 'User' AND AuditFlag = 1 AND ItemName = 'Division Access'))
BEGIN
  DECLARE RoleName CHAR(50);
  DECLARE StaffName CHAR(25);
  SELECT name INTO RoleName FROM division WHERE divisionid = new_access.divisionid;
  SELECT userid INTO StaffName FROM staff WHERE staffid = new_access.staffid;
  CALL AuditLog('USER','',string(StaffName,' Added division ',RoleName),'','Added')
END
}
GO
 
 
CREATE TRIGGER "DivisionAccessDeleteAudit" after DELETE ORDER 1 ON
"pears"."DivisionAccess"
REFERENCING OLD AS "old_access"
FOR each ROW
WHEN(EXISTS(SELECT * FROM "AuditItems" WHERE "AreaName" = 'User' AND "AuditFlag" = 1 AND "ItemName" = 'Division Access'))
BEGIN
  DECLARE "RoleName" CHAR(50);
  DECLARE "StaffName" CHAR(25);
  SELECT "name" INTO "RoleName" FROM "division" WHERE "divisionid" = "old_access"."divisionid";
  SELECT "userid" INTO "StaffName" FROM "staff" WHERE "staffid" = "old_access"."staffid";
  CALL "AuditLog"('USER','',"string"("StaffName",' Removed division ',"RoleName"),'Deleted','')
END
GO
 
 
COMMENT TO PRESERVE FORMAT ON TRIGGER "pears"."DivisionAccess"."DivisionAccessDeleteAudit" IS 
{CREATE TRIGGER DivisionAccessDeleteAudit 
 after DELETE ORDER 1 ON
DivisionAccess
REFERENCING OLD AS old_access
FOR each ROW
WHEN(EXISTS(SELECT * FROM AuditItems WHERE AreaName = 'User' AND AuditFlag = 1 AND ItemName = 'Division Access'))
BEGIN
  DECLARE RoleName CHAR(50);
  DECLARE StaffName CHAR(25);
  SELECT name INTO RoleName FROM division WHERE divisionid = old_access.divisionid;
  SELECT userid INTO StaffName FROM staff WHERE staffid = old_access.staffid;
  CALL AuditLog('USER','',string(StaffName,' Removed division ',RoleName),'Deleted','')
END
}
GO
  • database/tables/pears_divisionaccess.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1