Breadth record validation. Cursor redesign ensures multi-row batch safety. Cross-validates breadth against depth and draught to enforce physical plausibility.
(LRNO, SEQNO) pairs from insertedC09_MLD (moulded breadth) — when > 0, must be ≥ ABSD_HIDE.C10_MLD (moulded depth) for same LRNO+SEQNOC09_EX (extreme breadth) — when > 0, must be ≥ C09_MLDC09_MLD × ABSD_HIDR.C07_DL × ABSD_HILE.C02_LOA × 1.025 must be ≥ ABSD_STGE.C08_DSPLCMNT (displacement sanity)valStandard4_new applied to C09_EFDvalStandard8 applied to C09_SRCEvalStandard1 applied to C09_VERABSD_OVGE (author + date)ABSD_HIBR_UPDATES refreshed from base table for changed LRNOsUPDATE ABSD_SHIP_SEARCH SET BREADTH = C09_MLD where SEQNO='00'C09_EFD group via tblAnnotationLogGeneralDepth record validation. Cross-validates moulded depth against draught; depth must exceed draught for the same sequence record.
(LRNO, SEQNO) from insertedC10_MLD (moulded depth) — when > 0, must be > ABSD_HIDR.C07_DL (draught load line) for same LRNO+SEQNO='00'valStandard4_new applied to C10_EFDvalStandard8 applied to C10_SRCEvalStandard1 applied to C10_VERABSD_OVGEABSD_HIDE_UPDATES refreshed from base tableUPDATE ABSD_SHIP_SEARCH SET DEPTH = C10_MLD where SEQNO='00'C10_EFD groupFlag state and port of registry. One of the most interconnected triggers: flag changes cascade EFDs across six OVGE/SUPPLEMENTAL fields, blank registration identifiers when country changes, and sync multiple SHIP_SEARCH fields. EDM migration completed March 2026.
ABSD_CBCY to EDM.dbo.T_REF_COUNTRY
(COLLATE Latin1_General_CI_AI). Any tooling that queries ABSD_CBCY
for flag country validation is now stale.
valStandard4_new — B04_EFDvalStandard1 — B04_VERB04_HP_IND — enum: NYB04_CNTY — FK → EDM.dbo.T_REF_COUNTRY (post Mar 2026)B04_CNTY + B04_TOWN combined — FK → ABSD_CBTO1 (port of registry)UPDATE ABSD_OVGE SET B01_EFD=@EFD, B02_EFD=@EFD, B10_EFD=@EFD, B11_EFD=@EFDUPDATE SUPPLEMENTAL_ABSD_OVGE SET MMSI_EFD=@EFDB04_CNTY changes, the following registration identifiers are nulled/cleared:
B11_SATCOM, B01_CALLSIGN, B11_ANSBK_CODE,
B02_OFFNO, B10_FISHNO,
SUPPLEMENTAL_ABSD_OVGE.FISHNO20, MMSI, MMSI_EFD,
SUPPLEMENTAL_ABSD_HIFL.MMSI, SUPPLEMENTAL_ABSD_HIFL.CALLSIGN.
This prevents orphaned registration numbers from prior flag states remaining active.
ABSD_OVGEABSD_HIFL_UPDATES refreshed from base tableABSD_OVNA.FLAG_CDE sync — only for SEQNO='00'SET FLAG=B04_CNTY, PORT=B04_TOWN, PORTNAME=VWPORTDECODE.TOWNNAME, FLAGNAME=VWCOUNTRYDECODE.ALLNAMESB04_CNTY group; secondary on B04_TOWN groupBare-boat charter records. Uses the ownership-family date validator and includes a PARALLEL_IND business flag; J06 timestamp records launch time as well as date.
valStandard9Owner_new — charter EFD dates (ownership-style 8-char format)PARALLEL_IND — must be Y or N; controls whether this charter runs concurrently with registered ownershipJ06_AUTHOR + J06_LNCHDATE + J06_LNCHTIME (time component included — unlike most triggers)ABSD_HIBBC_UPDATES refreshed from base tableLR classification status per vessel. Uses ownership-family date format (valStandard9new, not valStandard4_new). LRCL_IND changes trigger mining notation add/delete procedures and update SHIP_SEARCH with full class string.
valStandard9new — LRCL_EFD (ownership-style date, not valStandard4_new)LRCL_IND — enum: Y Classed N Not classed W Withdrawn C Cancelled S Suspended T TransferredLRCL_IND changed to W (Withdrawn) → calls spClassNotationMiningDeleteLRCL_IND changed to Y (Classed) → calls spClassNotationMiningAdd using F03_NOT_LINES from ABSD_LRHNABSD_OVGEABSD_HILC_UPDATES refreshed from base tableSET classsearch = vwClass.classsearch, ClassList = ltrim(dbo.fnclasslist(@LRNO))LRCL_EFD groupForeign class record 1 (primary entry). J06 and annotations are commented out — delegated to ABSD_FOR_CLASS triggers since September 2006. Only version validation remains active.
tblAnnotationLogGeneral writes are commented out in this trigger body.
They are handled instead by the ABSD_FOR_CLASS trigger family, which fires on the
same table. Both trigger families are registered; ABSD_FOR_CLASS is authoritative for J06/annotations.
valStandard1 — B09_VER (only active validation)ABSD_HIFC1_UPDATES and ABSD_HIFC2_UPDATES from their respective base tables for all LRNOs in insertedForeign class record 2 (detail entry). Contains NN/UU cross-check between class code and status. SHIP_SEARCH classsearch refreshed from SEQNO='00' only. J06 and annotations remain commented out — FOR_CLASS handles them.
B09_FOR_CLAS — FK → ABSD_CBUB1 where FLDI='62'B09_FC_ST — enum: CDNYSUB09_FOR_CLAS='NN' then B09_FC_ST must be NB09_FOR_CLAS='UU' then B09_FC_ST must be UABSD_HIFC1_UPDATES and ABSD_HIFC2_UPDATESSET classsearch = vwClass.classsearchPropulsion configuration header. Minimal trigger — J06 audit only. No field validation, no staging, no annotation, no SHIP_SEARCH update.
J06_AUTHOR + J06_LNCHDATE written to ABSD_OVGEMain propulsion machinery records. Cursor redesigned January 2007 (MRE) to handle composite PK safely. Aggregates KW across all SEQNO='00' engines into SHIP_SEARCH POWER field. J06 conditional — only written if not already set for same author on same date.
KW — max 5 digitsOE01_RPM — max 4 digitsvalStandard4_new — EFDvalStandard8 — SRCEABSD_OVGE record already has the same author on
the same date (checked before update). Prevents redundant J06 stamps when a batch updates
multiple HIPM rows for one vessel.
ABSD_HIPM_UPDATES refreshed from base tableSET [POWER] = (SELECT SUM(KW) FROM ABSD_HIPM WHERE LRNO=@LRNO AND SEQNO='00')Type groupABSD_HIPU
for SeaWeb integration when new HIPM records were created. This logic is fully commented out
in the current trigger body.
Shaft and propulsion system records. Uses dual-guard pattern — must pass both TRIGGER_DISABLE and TRIGGER_DISABLE_HIPS checks before executing. Cursor redesign January 2007.
IF NOT EXISTS (SELECT * FROM TRIGGER_DISABLE) BEGIN
IF NOT EXISTS (SELECT * FROM TRIGGER_DISABLE_HIPS) BEGIN
-- trigger body
END
ENDKW — max 5 digitsOE01_RPM — max 4 digitsvalStandard4_new — EFDvalStandard8 — SRCEABSD_HIPS_UPDATES refreshed from base tableType groupAuxiliary propulsion unit records. Most comprehensive numeric validation in the propulsion family — three separate CC/value pairs validated with valStandard3Num. Cursor redesign January 2007.
POW — max 6 digitsKW — max 5 digitsOE01_RPM — max 4 digitsvalStandard4_new — EFDvalStandard8 — SRCEvalStandard3Num — POW_CC/POW pair (CC valid only when value > 0)valStandard3Num — KW_CCDE/KW pairvalStandard3Num — OE01_RPM_CC/OE01_RPM pairABSD_HIPU_UPDATES refreshed from base tableType groupPropeller records. Uses nested cursor pattern — outer cursor over LRNOs, inner cursor calls spValidateD05_PRTYP to validate propeller type against a codebook. Separate FK check on screw/paddle type.
D05_PRTYP — validated via stored procedure spValidateD05_PRTYP (inner cursor per LRNO)D05_SCRPA — FK → ABSD_CBUB1 where FLDI='04' (screw/paddle type codebook)valStandard4_new — D05_EFDvalStandard8 — D05_SRCEABSD_OVGEABSD_HIPR_UPDATES refreshed from base tableD05_EFD groupElectronic equipment records. Notable anomaly: the correction-code field D02_CC uses valStandard4_new (date-style validator) instead of the usual valStandard2 used for CC fields across other triggers.
valStandard2. HISE's D02_CC
is validated with valStandard4_new (the date validator). This appears intentional —
the electronic equipment CC field carries a date-format value rather than a standard correction code.
valStandard4_new — D02_EFDvalStandard4_new — D02_CC (unusual — see alert)valStandard1 — D02_VERvalStandard8 — D02_SRCED02_TYPE — FK → ABSD_CBUB1 where FLDI='16' (COLLATE SQL_Latin1_General_CP1_CS_AS)ABSD_OVGEABSD_HISE_UPDATES refreshed from base tableD02_EFD groupTonnage measurement records (gross and net tonnage values). Both gross and net have separate CC/value pair validation. Two version fields independently validated.
B08_GROSS — max 7 digitsB08_NET — max 7 digitsvalStandard4_new — B08_EFD, B08_CCvalStandard1 — B08_GR_VER, B08_NET_VERvalStandard8 — B08_SRCEvalStandard3Num — B08_GR_CC/B08_GROSS pairvalStandard3Num — B08_NET_CC/B08_NET pairABSD_OVGEABSD_HITM_UPDATES refreshed from base tableB08_EFD groupTonnage system records — which measurement system (e.g. Suez, Panama) applies. EDM migration April 2026 for tonnage system codebook. Source validation is currently commented out.
B05_TON_SYS FK validation migrated from ABSD_CBUB3
to EDM.dbo.T_REF_CBUB3 (COLLATE SQL_Latin1_General_CP1_CS_AS)
where TABNO='20'.
valStandard4_new — B05_EFDvalStandard2 — B05_CCvalStandard1 — B05_VERB05_SRCE validation — COMMENTED OUT in current trigger bodyB05_TON_SYS — FK → EDM.dbo.T_REF_CBUB3 TABNO='20' (post Apr 2026)ABSD_OVGEABSD_HITS_UPDATES refreshed from base tableB05_EFD groupTonnage type records. Tonnage type codebook also migrated to EDM April 2026. OSD/CSD indicator has a constrained five-value enum.
B06_TONTYP FK migrated from ABSD_CBUB3
to EDM.dbo.T_REF_CBUB3 where TABNO='21'.
valStandard4_new — B06_EFDvalStandard8 — B06_SRCEvalStandard2 — B06_CCvalStandard1 — B06_VERB06_TONTYP — FK → EDM.dbo.T_REF_CBUB3 TABNO='21'B06_OSD_CSD — enum: O COCNNUUABSD_OVGEABSD_HITT_UPDATES refreshed from base tableB06_EFD groupVessel status history — the most consequential HI* trigger. A status change cascades into: casualty notations, OWNC/OWST rebuild, SHIP_SEARCH, NB quarter markers, NBEmail flags, thruster/generator/engine status sync, and OVSMC/OVDOC creation on first-'S' entry. Uses valStandard10_new (not valStandard4_new) for EFD. Cursor redesigned December 2006. Updated December 2025 to reference vwABSD_OWXR_EDM for EDM-sourced ownership data.
vwABSD_OWXR_EDM which queries ownership
relationship data directly from EDM rather than local ABSD tables.
Comment in code: "Updated to use vwABSD_OWXR_EDM which references REL data from EDM directly."
A02_STS — FK → ABSD_CBUB1 where FLDI='19' (checked across all inserted rows before cursor opens)valStandard10_new — A02_EFD (different from valStandard4_new used by other HI* triggers)DOB future-date block — if vessel status is NOT in POUFENXZA, DOB may not be in the futureABSD_CBCYABSD_OVGEABSD_HIST_UPDATES refreshed from base tableSET STATUSCODE=A02_STS, STATUS=ABSD_CBUB1.TRUDABSD_OVNA.SHP_ACT_ST synced to new statusA02_STS='S' → auto-create ABSD_OVSMC (safety management certificate) + ABSD_OVDOC (document of compliance) recordsABSD_NCON.COMMQTR (commissioning quarter marker)ABSD_NCON.LQTR (laid-up quarter marker)ABSD_NCON.CQTR (completion quarter marker)SUPPLEMENTAL_ABSD_NCON.NBEMAILINDICATOR = '1'SUPPLEMENTAL_ABSD_NCON.NBEMAILINDICATOR = '0'UPDATE SUPPLEMENTAL_ABSD_NCON SET NBEmailIndicator='1'SUPPLEMENTAL_ABSD_NCON.RELEASEDATEtblFSWNBPage: P→'P', all others→'U'; special case: if transitioning from NB status within 2 months of completion → 'D'ABSD_MATH.e95_thst_stat → synced to vessel status (thruster records)ABSD_HIGE.e45_gs → synced (generator records, SEQNO='00')ABSD_HIMO.es → synced (engine records, SEQNO='00')ABSD_OVCA via spMakeNewCas:
ABSD_OWNC (vessel-company relationships)ABSD_OWNC populated for RC (registered owner) and MR (manager) relationship typesABSD_OWST (company fleet counts) recalculated using 5-part IRP/RP/P formula sourced from vwABSD_OWXR_EDMA02_STS group (status change)A02_EFD groupHistory cross-reference records linking vessels to external reference systems. Staging key is a composite of owner/date/cross-reference fields — not LRNO as in all other triggers.
ABSD_HRXR_UPDATES is keyed by OWCODE + OWDATE + XRCODE + XREF_IND
rather than LRNO. This reflects the table's role as a cross-reference registry where multiple
vessels may share cross-reference codes, and LRNO alone does not uniquely identify records.
ABSD_OVGE (keyed via LRNO from inserted)ABSD_HRXR_UPDATES refreshed using composite keyTanker-specific hull details (COW, IGS, SBT, coating, hull type). Anomalous: this trigger does NOT check TRIGGER_DISABLE. It always fires regardless of the disable table state. Syncs several FUSF2 (fuel oil system) fields when hull-type and safety system fields change.
ABSD_TANKER_Update
has no IF NOT EXISTS (SELECT * FROM TRIGGER_DISABLE) wrapper.
It fires unconditionally. Bulk loads or migrations that populate TRIGGER_DISABLE to suppress
other triggers will NOT suppress TANKER. Plan accordingly.
ABSD_FUSF2 fields synced based on TANKER values: hull type, COW indicator, IGS indicator, SBT indicatorAccommodation data. Simple trigger with one EFD validation. A typo exists in the error message — it reads 'A01_EFD' but refers to field D03_EFD.
valStandard4_new — D03_EFD (error message in trigger incorrectly labels this 'A01_EFD' — typo in original code)ABSD_OVGEABSD_STAL_UPDATES refreshed from base tableD03_EFD groupDeck data. No field validation. Staging uses inserted directly rather than re-querying the base table — distinct from the pattern used by all other ST* triggers.
inserted (not base table)
INSERT ABSD_STDE_UPDATES SELECT * FROM inserted — Most triggers delete from
the updates table then re-select from the base table to get the current committed state.
STDE copies directly from the inserted pseudo-table (the triggering rows only),
which means STDE_UPDATES reflects only the rows being changed, not the full vessel record set.
ABSD_OVGEABSD_STDE_UPDATES populated from inserted (not base table)C05_EFD groupGeneral structural geometry. Validates hull height against depth and displacement against physical dimensions (L × B × D × 1.025). Cursor redesign October 2007. SHIP_SEARCH DISPLACEMENT has no SEQNO filter (unlike most other SHIP_SEARCH updates).
C04_HGHT — when > 0, must be ≥ ABSD_HIDE.C10_MLD (moulded depth) for SEQNO='00'C08_DSPLCMNT — max 7 digitsC08_DSPLCMNT — must be < LENGTH × BREADTH × DRAFT × 1.025:HILE.C02_LOA → fallback C02_LBP → fallback C02_REGHIBR.C09_MLD → fallback C09_EXHIDR.C07_DLABSD_OVGEABSD_STGE_UPDATES refreshed from base tableSET DISPLACEMENT = C08_DSPLCMNT — no SEQNO='00' filterC04_srce, DOB, c08_dsplcmntKeel data. No field validation. Standard pattern: J06, staging from base table, annotation.
ABSD_OVGEABSD_STKE_UPDATES populated from insertedC06_EFD groupShipbuilder and construction records — the most complex ST* trigger. Dual-guard pattern. Validates builder, standard type, hull material, multiple date formats. When completion date changes on a pre-service vessel, cascades EFDs to 30+ tables across the schema.
TRIGGER_DISABLE and TRIGGER_DISABLE_STSE to be empty.
TRIGGER_DISABLE_STSE allows suppressing only the completion-date cascade during targeted
construction data migrations without disabling all triggers.
C01_BLD_COMP — mandatory; FK → ABSD_CBSB composite key (KEYC+KEYG+KEYN+KEYX); also FK → absd_cbcoaddrC01_STD_TYP_CODE — FK → ABSD_OVGE (i.e. must be an LRNO of an existing vessel — standard type is defined by reference to another vessel)C01_SUFFX — must not be set unless C01_YRDNO also has a valueC01_MLD_CC — enum: MHUNY; values M/H/Y require hull material in {RP, FC, WP, SC, YY}valStandard8 — C01_SRCEvalStandard1 — C01_YRD_VERvalStandard9new — C01_LNCH_DT, C01_DTH_DT, C01_COMP_DTvalStandard4_new — C01_COMM_DT, C01_EFDC01_HUL_MAT changes to RP or AL → UPDATE ABSD_FUCO2 SET D09_MAT='NN'UPDATE ABSD_FUCO2 SET D09_MAT='ST'ABSD_FTME.j01_dateABSD_FTNT.j05_efdABSD_FTQY.j02_dateABSD_FUCA1.d08_efdABSD_FUCO1.d09_efdABSD_FUDI1.d22_efd + d21_efdABSD_FUDO1.d17_efdABSD_FUGE.d06+d10+d18+d25_efdABSD_FUHA1.d16_efdABSD_FULC.d14_efdABSD_FULI1.d19_efdABSD_FURO1.d13_efd + d23_efdABSD_FUSF.d07_efdABSD_FUST1.d12_efdABSD_FUTO.d20_efdABSD_FUUN1.d11_efdABSD_HIBR.c09_efd (SEQNO='00')ABSD_HIDE.c10_efd (SEQNO='00')ABSD_HIDR.c07_efd (SEQNO='00')ABSD_HIFL.b04_efd (SEQNO='00')ABSD_HIGE.E45_efd+dm (SEQNO='00')ABSD_HILE.c02_efd (SEQNO='00')ABSD_HIMO.efd+dm (SEQNO='00')ABSD_HIMT (first SEQNO='00')ABSD_HIOW.h01_efd (8-char, SEQNO='00')ABSD_HIOP.operator_efd (8-char, SEQNO='00')ABSD_SPTM.efd (8-char)ABSD_HIMA.h02_efd (8-char, SEQNO='00')ABSD_HISM.efd (8-char, SEQNO='00')ABSD_HIPP_dated.h03_efd (using HIOW EFD, SEQNO='00')
ABSD_OVGEABSD_STSE_UPDATES refreshed from base tableC01_BLD_COMP groupSuperstructure data. Most validation-heavy ST* trigger. Fourteen OD_TYP-specific cross-checks, eight CC fields with zero-value rules, and multiple mutual exclusion pairs between deck structure fields.
valStandard4_new — C03_EFDvalStandard8 — C03_SRCEvalStandard1 — C03_VERC03_OD_TYP — must be alphanumeric only (no special characters)Each deck structure field (POOP, BRIDGE, FOCSLE, BR_AFT, BR_FO, BR_PO, RQDK, RADK, RFDK, RSDK, TRUNK, TR_AFT, TR_FO, TR_WEL) has an associated CC field validated with valStandard2. When C03_OD_TYP=0, all CC fields must be set to 'N'.
C03_OD_TYP = 0: all deck structure CC fields must be NC03_OD_LTH — must be > 0 unless C03_OD_LTH_CC is set; C03_OD_TYP must have a value when C03_OD_LTH is setC03_BR_STM — must be > 0 unless C03_BR_STM_CC = 'Y'A → BRIDGE requiredB or C → RQDK requiredD → POOP and FOCSLE both excludedE → POOP and RQDK both excludedF → BR_FO excludedI → FOCSLE or BR_FO required (at least one)L → BR_FO requiredP → BRIDGE and RQDK both excludedQ → FOCSLE and RQDK both excludedR → POOP requiredW → POOP required2 → BRIDGE required8 → at least one of BR_AFT, BRIDGE, POOP requiredABSD_OVGEABSD_STST_UPDATES populated from insertedC03_EFD groupLR equipment requirements record 1. Uses INSTEAD OF pattern — the trigger intercepts the INSERT/UPDATE, deletes the existing record, then inserts the new values. This is the full-replace pattern used by LREQ1, LRHI, and LRHN.
DELETE FROM ABSD_LREQ1 WHERE LRNO IN (SELECT LRNO FROM inserted)INSERT ABSD_LREQ1 SELECT * FROM insertedvalStandard4_new — F08_EFDvalStandard8 — F08_SRCEABSD_OVGEABSD_LREQ1_UPDATES refreshed from base table after replaceLR equipment requirements record 2 — cable/graduation data. FK validation on cable grade codebook.
F08_CABGRAD — FK → ABSD_CBUB1 where FLDI='48' (cable grade)ABSD_OVGEABSD_LREQ2_UPDATES refreshed from base tableF08_CAB_GRAD groupLR equipment requirements record 3 — anchor weight data. Cross-check prevents dual unit entry.
F08_ANC_WGT_MET and F08_ANC_WGT_IMP cannot both be > 0 — metric and imperial anchor weights are mutually exclusiveABSD_OVGEABSD_LREQ3_UPDATES refreshed from base tableF08_ANC_NO groupLR equipment requirements record 4 — fee and equipment symbols. Two symbol fields with constrained three-value enums.
F08_FEE_SYMB — must be +, *, or blankF08_EQIP_SYM — must be +, *, or blankABSD_OVGEABSD_LREQ4_UPDATES refreshed from base tableF08_EQIP_LET groupLR general data — the most comprehensive LR* trigger. Covers multiple data groups (F02 through F31) each with independent EFD/SRCE/CLS validation. Three inter-table cross-checks enforce classification consistency. Seven annotation groups.
F02 (Service Type)
valStandard4_new — F02_EFDvalStandard8 — F02_SRCEF02_STYP1 — enum: CSSSDRD4HTLKTDT4RDF02_STYP2 — enum: SSTDF02_MOD — valStandardYNF04 (Machinery)
valStandard4_new — F04_EFDvalStandard8 — F04_SRCEF04_MBT — enum: *+REBNAF04_RULES — enum: LBNOMF04_STAT — enum: CSF05 (Hull Classification)
valStandard4_new — F05_EFDvalStandard8 — F05_SRCEF05_CLS — valStandardYNF05_STAT — S or blankF07 / F28 (Additional Class)
F07_CLS, F28_CLS — valStandardYNF07_STAT, F28_STAT — S or blankF06 (Class Society)
valStandard4_new — F06_EFDvalStandard8 — F06_SRCEF06_CLS — enum: L+LG+GR+MNNUUF06_STAT — S or blankF31 (DPS)
valStandard4_new — F31_EFDvalStandard8 — F31_SRCEF31_DPS — enum: AAAMNNCMDOB / F29
DOB — valStandard4_newF29_EFD, F29_SRCEF02_EFD year must not precede the year of ABSD_STSE.C01_EFD — the general LR record cannot pre-date the shipbuilder recordF05_CLS='Y' requires F04_MBT to be set, unless ABSD_LRHN.F03_S_STAT='C' (cancelled notation exempts from machinery requirement)F06_CLS ≠ 'NN' when ABSD_OVTY.D01_INT_BASIC LIKE '_3___' OR '__3__' (vessel type requires LNG classification) then ABSD_FUGE.D10_LQG must be > 0ABSD_OVGEABSD_LRGE_UPDATES populated from insertedDOB, F02_EFD, F04_EFD, F05_EFD, F06_EFD, F07_EFD, F28_EFD, F29_EFD, F31_EFDLR historical data. INSTEAD OF pattern (full replace). Contains a suspected copy-paste artefact in the pre-delete guard condition.
IF EXISTS (SELECT * FROM ABSD_FTNT WHERE LRNO IN (SELECT LRNO FROM inserted))
before deleting from ABSD_LRHI. This condition references ABSD_FTNT
(a fuel type table) and appears to be a copy-paste error — it likely should reference
ABSD_LRHI itself. The effect is that the delete may be skipped if no FTNT record
exists for the vessel.
valStandard4_new — F17_EFDvalStandard8 — F17_SRCEvalStandard2 — F17_SPINDABSD_LRHI records for LRNO (subject to FTNT guard — see alert)inserted pseudo-tableABSD_OVGEABSD_LRHI_UPDATES refreshedLR hull notation. INSTEAD OF pattern. F03_NOT_LINES changes trigger class notation mining procedures. Multiple ice class fields with a shared enum. Freeboard indicator uses valStandardYN.
valStandard4_new — F03_EFDvalStandard8 — F03_SRCEF03_ICE_CLS1, F03_ICE_CLS2, F03_MI_CLASS — enum: 1*123NI1S1A1B1C1DCEABCDSNSFNNF03_IC1_STAT, F03_IC2_STAT, F03_MI_STAT — must be S or blankF03_FRBRD — valStandardYNF03_NOT_LINES changes AND ABSD_HILC.LRCL_IND='Y' for this LRNO:spClassNotationMiningDelete then spClassNotationMiningAddABSD_LRHN records for LRNOinserted pseudo-tableABSD_OVGEABSD_LRHN_UPDATES refreshedLR survey codes. Nullable FK on survey code codebook. Direction indicator (D/E) has a cross-check: E-type records must not carry a date.
F11_CODE — FK → ABSD_CBUB1 where FLDI='57' (nullable — only checked when NOT NULL)F11_DIND — enum: D (due) E (exemption)F11_DIND='E', F11_DATE must not be set — exemptions have no due dateF11_DATE format validation — commented out in current trigger bodyABSD_OVGEABSD_LRSC_UPDATES refreshed from base tableF11_CODE groupLR survey records. Uses valStandardYMD for EFD — a distinct date format not used by any other trigger in this series. Source validation is commented out.
F11_EFD is validated with valStandardYMD (year-month-day format).
All other triggers in this database use valStandard4_new, valStandard9new,
or valStandard10_new for date fields. LRSU is the only trigger using
valStandardYMD.
valStandardYMD — F11_EFDF11_SRCE validation — commented outABSD_OVGEABSD_LRSU_UPDATES refreshed from base tableF11_EFD groupLR working draft data. Uses valStandard9new (ownership-style 8-char date) for EFD, but only when the value is not '00000000' — the zero date is a valid placeholder that bypasses format validation.
valStandard9new — F09_EFD (only validated when F09_EFD ≠ '00000000')valStandard8 — F09_SRCEABSD_OVGEABSD_LRWD_UPDATES refreshed from base tableF09_EFD group| Trigger | Guard | Pattern | Date Validator | Staging Table | SHIP_SEARCH Field(s) | Notable Rules |
|---|---|---|---|---|---|---|
HIBR_Update | Standard | Cursor LRNO+SEQNO | valStandard4_new | HIBR_UPDATES | BREADTH | Cross-check vs HIDE depth |
HIDE_Update | Standard | Cursor LRNO+SEQNO | valStandard4_new | HIDE_UPDATES | DEPTH | Cross-check vs HIDR draft |
HIFL_Update | Standard | Cursor LRNO+SEQNO | valStandard4_new | HIFL_UPDATES | FLAG, PORT, PORTNAME, FLAGNAME | EDM Mar 2026; EFD cascade; country-change blanking |
HIBBC_Update | Standard | Set-based | valStandard9Owner_new | HIBBC_UPDATES | — | LNCHTIME in J06; PARALLEL_IND enum |
HILC_Update | Standard | Cursor LRNO+SEQNO | valStandard9new | HILC_UPDATES | classsearch, ClassList | Mining add/delete on LRCL_IND change |
HIFC1_Update | Standard | Set-based | — | HIFC1+HIFC2_UPDATES | — | J06/annotations handled by FOR_CLASS |
HIFC2_Update | Standard | Set-based | — | HIFC1+HIFC2_UPDATES | classsearch | NN/UU → FC_ST cross-check; FOR_CLASS delegation |
HIPC_Update | Standard | Set-based | — | — | — | J06 only; minimal trigger |
HIPM_Update | Standard | Cursor 5-key | valStandard4_new | HIPM_UPDATES | POWER (SUM KW) | Conditional J06; KW max 5 digits |
HIPS_Update | DUAL (TRIGGER_DISABLE_HIPS) | Cursor 5-key | valStandard4_new | HIPS_UPDATES | — | Dual guard pattern |
HIPU_Update | Standard | Cursor 5-key | valStandard4_new | HIPU_UPDATES | — | 3x valStandard3Num pairs; POW max 6 digits |
HIPR_Update | Standard | Outer+Inner cursor | valStandard4_new | HIPR_UPDATES | — | spValidateD05_PRTYP; D05_SCRPA FLDI='04' |
HISE_Update | Standard | Set-based | valStandard4_new | HISE_UPDATES | — | D02_CC uses valStandard4_new (anomaly) |
HITM_Update | Standard | Set-based | valStandard4_new | HITM_UPDATES | — | 2x valStandard3Num pairs; GROSS/NET max 7 digits |
HITS_Update | Standard | Set-based | valStandard4_new | HITS_UPDATES | — | EDM Apr 2026; B05_SRCE validation commented out |
HITT_Update | Standard | Set-based | valStandard4_new | HITT_UPDATES | — | EDM Apr 2026; OSD_CSD 5-value enum |
HIST_Update | Standard | Cursor LRNO+SEQNO | valStandard10_new | HIST_UPDATES | STATUSCODE, STATUS | Most complex: OWNC/OWST rebuild, casualty auto-notation, quarter markers, NB email |
HRXR_Update | Standard | Set-based | — | HRXR_UPDATES (composite key) | — | Non-LRNO staging key |
TANKER_Update | NONE | Set-based | — | — | — | Always fires; FUSF2 sync; J06 on non-coating only |
STAL_Update | Standard | Set-based | valStandard4_new | STAL_UPDATES | — | Error message labels D03_EFD as 'A01_EFD' (typo) |
STDE_Update | Standard | Set-based | — | STDE_UPDATES (from inserted) | — | Stages from inserted, not base table |
STGE_Update | Standard | Cursor LRNO | — | STGE_UPDATES | DISPLACEMENT (no SEQNO filter) | L×B×D×1.025 displacement cross-check |
STKE_Update | Standard | Set-based | — | STKE_UPDATES | — | No validation |
STSE_Update | DUAL (TRIGGER_DISABLE_STSE) | Cursor LRNO+SEQNO | valStandard9new + valStandard4_new | STSE_UPDATES | — | Completion date cascade to 30+ tables; hull material propagation |
STST_Update | Standard | Set-based | valStandard4_new | STST_UPDATES | — | 14+ OD_TYP rules; 9 mutual exclusion pairs |
LREQ1_Insert | Standard | INSTEAD OF | valStandard4_new | LREQ1_UPDATES | — | Full delete+insert replace |
LREQ2_Update | Standard | Set-based | — | LREQ2_UPDATES | — | CABGRAD FK FLDI='48' |
LREQ3_Update | Standard | Set-based | — | LREQ3_UPDATES | — | Metric/imperial anchor weight mutual exclusion |
LREQ4_Update | Standard | Set-based | — | LREQ4_UPDATES | — | FEE_SYMB and EQIP_SYM: +/* or blank only |
LRGE_Update | Standard | Set-based | valStandard4_new | LRGE_UPDATES | — | 7+ annotation groups; 3 cross-checks; F02–F31 groups |
LRHI_Insert | Standard | INSTEAD OF | valStandard4_new | LRHI_UPDATES | — | FTNT guard artefact; full replace |
LRHN_Insert | Standard | INSTEAD OF | valStandard4_new | LRHN_UPDATES | — | spClassNotationMining on NOT_LINES change; ice class enum |
LRSC_Update | Standard | Set-based | — | LRSC_UPDATES | — | DIND=E excludes F11_DATE; F11_CODE nullable FK |
LRSU_Update | Standard | Set-based | valStandardYMD | LRSU_UPDATES | — | Only trigger using valStandardYMD |
LRWD_Update | Standard | Set-based | valStandard9new | LRWD_UPDATES | — | EFD validated only when ≠ '00000000' |