ARTEX 현재 시스템 문서
전체 문서
이 페이지 목차

PostgreSQL function·trigger·migration 참조

core db/schema.sql의 table 바깥 상태 변경을 정적으로 추출한다. 고정 source revision에는 function 4개, trigger 22개(공용 updated_at 20 + asset provenance 1 + retest 정리 1), ALTER TABLE 문 86개, 명시 index 97개가 있다. Core 49개 table의 최종 column 합집합 520개는 raw DDL을 정적으로 합친 수이며 PostgreSQL을 실행해 검증한 결과가 아니다. core schema

Function 4개

Function 4개 · 관계

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 1개 · 종류 선택·관계도
function function effect + trigger/call-site table effect trigger/caller
set_updated_at() companies write(updated_at); assets write(updated_at); explorations write(updated_at); exploration_nodes write(updated_at); llm_profiles write(updated_at); task_categories write(updated_at); tasks write(updated_at); task_archives write(updated_at); task_templates write(updated_at); task_asset_links write(updated_at); task_llm_profiles write(updated_at); agents write(updated_at); mcp_servers write(updated_at); tools write(updated_at); conversations write(updated_at); agent_triggers write(updated_at); intercept_rules write(updated_at); asset_intercept_rules write(updated_at); task_intercept_rules write(updated_at); notification_channels write(updated_at) trg_companies_upd, trg_av2_upd, trg_exp_upd, trg_expnodes_upd, trg_llm_upd, trg_task_categories_upd, trg_tasks_upd, trg_task_archives_upd, trg_task_templates_upd, trg_task_asset_links_upd, trg_task_llm_profiles_upd, trg_agents_upd, trg_mcp_upd, trg_tools_upd, trg_conversations_upd, trg_agent_triggers_upd, trg_intercept_rules_upd, trg_asset_intercept_rules_upd, trg_task_intercept_rules_upd, trg_notification_channels_upd
try_inet() 직접 table read/write 없음; text→inet/NULL 변환. assets·company_scope·task_scope는 이 함수를 호출하는 query의 table try_inet(...) production query
sync_task_asset_links() assets read trigger row(id,task_ids); tasks read(id,deleted_at); task_asset_links write(task_id,asset_id,source,source_summary) trg_assets_task_links
stop_deleted_conversation_retest() conversations read trigger row(id); finding_retests write(status,error,finished_at) trg_conversation_retest_delete

Trigger 22개

trigger timing/event/level fire table function 영향 열·상태
trg_companies_upd BEFORE UPDATE / ROW companies set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_av2_upd BEFORE UPDATE / ROW assets set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_exp_upd BEFORE UPDATE / ROW explorations set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_expnodes_upd BEFORE UPDATE / ROW exploration_nodes set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_llm_upd BEFORE UPDATE / ROW llm_profiles set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_task_categories_upd BEFORE UPDATE / ROW task_categories set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_tasks_upd BEFORE UPDATE / ROW tasks set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_task_archives_upd BEFORE UPDATE / ROW task_archives set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_task_templates_upd BEFORE UPDATE / ROW task_templates set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_task_asset_links_upd BEFORE UPDATE / ROW task_asset_links set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_assets_task_links AFTER INSERT OR UPDATE OF TASK_IDS / ROW assets sync_task_asset_links() asset task_ids 뒤 provenance link insert/delete
trg_task_llm_profiles_upd BEFORE UPDATE / ROW task_llm_profiles set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_agents_upd BEFORE UPDATE / ROW agents set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_mcp_upd BEFORE UPDATE / ROW mcp_servers set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_tools_upd BEFORE UPDATE / ROW tools set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_conversations_upd BEFORE UPDATE / ROW conversations set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_agent_triggers_upd BEFORE UPDATE / ROW agent_triggers set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_intercept_rules_upd BEFORE UPDATE / ROW intercept_rules set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_conversation_retest_delete BEFORE DELETE / ROW conversations stop_deleted_conversation_retest() conversation delete 전에 active retest를 stopped로 전이
trg_asset_intercept_rules_upd BEFORE UPDATE / ROW asset_intercept_rules set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_task_intercept_rules_upd BEFORE UPDATE / ROW task_intercept_rules set_updated_at() row update 전에 updated_at을 now()로 덮어씀
trg_notification_channels_upd BEFORE UPDATE / ROW notification_channels set_updated_at() row update 전에 updated_at을 now()로 덮어씀

각 trigger는 DROP TRIGGER IF EXISTS 뒤 재생성된다. schema file이 startup transaction에서 끝까지 commit되기 전에 실패하면 새 정의는 적용되지 않는다. 실제 운영 schema drift는 관찰하지 않았다.

조건부 legacy migration과 최종 정의

조건부 legacy migration과 최종 정의 · 관계

이 대상이 사용하는 구현·계약·의존 · 1개

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 2개 · 종류 선택·관계도

아래 블록은 fresh CREATE만으로는 보이지 않는 기존 설치 변환이다. 조건이 맞는 row/constraint에만 실행되며, block 안 SQL이 실패하면 startup schema transaction이 rollback되고 server startup도 실패한다.

객체 fresh 정의 legacy 조건과 변경 실패·경계
exploration_nodes.ck_node_kind begin, goal, intent, fact, finding, hint, digest 같은 이름 constraint의 pg_get_constraintdef text에 digest token이 없을 때 drop/recreate lexical substring 탐지라 token만 포함한 wrong/weaker/stricter 식은 skip될 수 있음; 다른 이름 제약은 바꾸지 않으며 legacy kind가 최종 allowlist 밖이면 ADD CHECK 실패·rollback
exploration_nodes.ck_node_state intent에 paused/deleted, digest에 superseded를 포함한 kind별 state check 같은 이름 constraint text에 paused, superseded, deleted token 중 하나라도 없을 때 drop/recreate lexical substring 탐지라 세 token만 포함한 wrong/weaker/stricter 식은 skip될 수 있음; 기존 row가 최종 check를 위반하면 add 실패·rollback
exploration_edges.ck_edge_rel spawns, derived_from, yields, proves, covers constraint text에 rel을 포함하고 covers가 없는 CHECK의 동적 legacy 이름을 찾아 drop한 뒤 ck_edge_rel 추가 lexical substring 선택이라 unrelated/wrong CHECK도 후보가 될 수 있음; 일치가 0개면 drifted table에 최종 check를 추가하지 않음; non-STRICT SELECT INTO와 ORDER BY 부재로 여러 일치 중 임의 하나만 drop해 남은 stricter check가 covers를 거부할 수 있음; legacy row 위반 시 add 실패·rollback
llm_profiles.thinking_type TEXT NOT NULL DEFAULT '' column이 없을 때만 추가하고 old reasoning_effort: low/medium/high/max→enabled, off→disabled+effort 빈 값 information_schema.columns lookup에 table_schema filter가 없어 search path 밖 동명 table이 있으면 잘못 skip할 수 있음(U); column이 이미 있으면 backfill 전체를 건너뛰어 사용자의 이후 조합을 보존
agents.current_prompt_id FK agent_prompts(id) ON DELETE SET NULL 두 table 생성 뒤 fk_agents_curprompt를 추가; duplicate_object는 정의를 대조하지 않고 무시 같은 이름의 기존 FK가 잘못된 column/target/delete action이어도 조용히 수용·미수리; 다른 이름의 같은 FK는 중복될 수 있고 orphan legacy 값이면 add 실패·rollback

Fresh·upgrade 제약 및 반복 migration

owning object startup 행위 fresh·legacy 차이와 실패 경계
agents.trigger_run_mode/trigger_merge_mode legacy DB에 column/default/not-null을 ADD COLUMN IF NOT EXISTS fresh CREATE 경로에만 mode allowlist CHECK가 있고 legacy ADD에는 CHECK가 없다. upgraded DB의 무결성은 backend 쓰기 allowlist에 의존하며 DB 전역 보장이 아님
task_intercept_rules.action legacy DB에 action TEXT NOT NULL DEFAULT 'block' 추가 fresh는 block/allow CHECK가 있지만 legacy ADD에는 CHECK가 없어 동일한 divergence가 있음
intercept_pending.decision_source column 추가 후 빈 값을 rule_id→rule, [模型]%→model, 나머지→unknown으로 CASE UPDATE WHERE decision_source=''를 매 startup 반복 실행하므로 이후 빈 값을 저장하면 다음 startup에 다시 분류됨; statement 실패 시 transaction rollback
task_scope old uq_task_scope를 조건 없이 drop하고 value까지 포함한 uq_task_scope_v2를 IF NOT EXISTS로 생성 IF NOT EXISTS는 이름만 검사하므로 동명 stale/wrong 정의를 수리하지 않음; 신규 생성을 거부하는 legacy 중복이 있으면 statement 실패가 transaction rollback되어 old drop도 되돌아가야 함; 실제 DB는 미관찰
mcp_servers ScopeSentry 이름이 없을 때 disabled HTTP placeholder(URL null, empty API-key env) insert name conflict면 DO NOTHING; 사용자가 수정한 row를 덮어쓰지 않지만, 다른 이름의 동일 server는 중복 개념으로 남을 수 있음
company_scope, llm_profiles, task_scope, mcp_servers, assets.company_source 매 startup에 소스가 지정한 exact constraint name만 DROP CONSTRAINT IF EXISTS한 뒤 현재 allowlist/payload/format/max/retry/transport/source CHECK를 다시 추가 NOT VALID가 아니라 기존 row를 매번 전수 재검증하고 ALTER table lock이 normal writer를 block할 수 있음. initializer의 session advisory lock은 schema initializer와 명시적으로 참여하는 archive/aux-ledger transaction을 직렬화하지만 일반 connection은 gate하지 않음. invalid legacy row면 schema transaction과 startup이 중단되며, 다른 이름의 old/stricter semantic CHECK는 남아 새 named CHECK와 병존할 수 있음; 자동 정규화는 assets.company_source null→explicit 외에 없음
task_archives.format_version, agents.run_seconds column default를 각각 2, 1200으로 ALTER 기존 row backfill이 아니며 이후 default를 쓰는 INSERT에만 적용

ADD COLUMN IF NOT EXISTS는 column이 없을 때만 선언한 type/null/default/FK를 적용한다. 같은 이름의 legacy column이 다른 property를 가져도 별도 ALTER가 없는 한 수렴하지 않는다. 따라서 core 520-column 합집합은 이 revision의 declared target이며 upgraded 운영 catalog의 520개 property가 모두 같다는 보장이 아니다.

Startup data backfill

owning object exact mutation 조건·멱등성 부분 실패 경계
assets.company_source UPDATE assets SET company_source='explicit' WHERE company_source IS NULL 뒤 default/not-null/check 적용 null legacy row만 매 startup 변환; 이미 explicit/scope인 row는 유지 legacy null update 또는 뒤 constraint 적용 실패 시 core schema transaction 전체 rollback
assets.task_ids → task_asset_links array를 unnest해 존재하며 deleted_at IS NULL인 task만 (task_id,asset_id,source=legacy) insert ON CONFLICT DO NOTHING으로 재실행 멱등; stale/deleted task id는 link를 만들지 않음 statement 실패 시 core schema transaction rollback; 기존 detailed source row는 conflict로 덮지 않음
tasks.llm_profile_id → task_llm_profiles chain이 없는 pinned task에 position 0 row insert 후 active_llm_profile_id가 null이고 chain row가 존재할 때 legacy profile로 설정 NOT EXISTS+ON CONFLICT DO NOTHING; user가 chain을 지우는 update는 legacy column도 비워 다음 startup 재생성을 막음 insert/update 둘 중 실패하면 같은 schema transaction rollback; existing non-null active profile은 보존
llm_profiles.reasoning_effort → thinking_type column이 없을 때 low/medium/high/max→enabled, off→disabled와 effort 빈 값 column 존재 자체가 one-time marker; 이후 사용자 조합은 startup이 다시 쓰지 않음 add 또는 두 UPDATE 중 실패하면 core schema transaction rollback

CREATE TABLE column 510개와 ALTER ... ADD COLUMN 58개 중 48개 중복·10개 additive-only를 합치면 core 520개다. llm_records·llm_usage 31개는 이 파일 밖 best-effort Ensure*Table이며 core migration transaction과 가용성 보장이 다르다. 보조 ledger

확인 범위

층 확인 결과
고정 소스 정적 추출 function 4, trigger 22, 명시 index 97, core table 49, 최종 column 합집합 520
실행 검증 수행하지 않음; PostgreSQL instance·migration log artifact 없음
미확인 운영 instance drift, legacy row backfill 성공, role/grant, extension, query plan

reset-password.sh의 pgcrypto 사용은 운영 script 의존이다. core schema가 extension을 생성하거나 모든 배포에서 availability를 보장하지 않는다.

set_updated_at()

set_updated_at() · 관계

이 대상이 사용하는 구현·계약·의존 · 20개

이 대상을 사용하는 기능·모듈·계약 · 20개

전체 관계 40개 · 종류 선택·관계도

NEW.updated_at = now() 뒤 NEW 반환. 정확한 DDL 근거

table access/effect 열 조건
companies write updated_at BEFORE UPDATE ROW trigger trg_companies_upd
assets write updated_at BEFORE UPDATE ROW trigger trg_av2_upd
explorations write updated_at BEFORE UPDATE ROW trigger trg_exp_upd
exploration_nodes write updated_at BEFORE UPDATE ROW trigger trg_expnodes_upd
llm_profiles write updated_at BEFORE UPDATE ROW trigger trg_llm_upd
task_categories write updated_at BEFORE UPDATE ROW trigger trg_task_categories_upd
tasks write updated_at BEFORE UPDATE ROW trigger trg_tasks_upd
task_archives write updated_at BEFORE UPDATE ROW trigger trg_task_archives_upd
task_templates write updated_at BEFORE UPDATE ROW trigger trg_task_templates_upd
task_asset_links write updated_at BEFORE UPDATE ROW trigger trg_task_asset_links_upd
task_llm_profiles write updated_at BEFORE UPDATE ROW trigger trg_task_llm_profiles_upd
agents write updated_at BEFORE UPDATE ROW trigger trg_agents_upd
mcp_servers write updated_at BEFORE UPDATE ROW trigger trg_mcp_upd
tools write updated_at BEFORE UPDATE ROW trigger trg_tools_upd
conversations write updated_at BEFORE UPDATE ROW trigger trg_conversations_upd
agent_triggers write updated_at BEFORE UPDATE ROW trigger trg_agent_triggers_upd
intercept_rules write updated_at BEFORE UPDATE ROW trigger trg_intercept_rules_upd
asset_intercept_rules write updated_at BEFORE UPDATE ROW trigger trg_asset_intercept_rules_upd
task_intercept_rules write updated_at BEFORE UPDATE ROW trigger trg_task_intercept_rules_upd
notification_channels write updated_at BEFORE UPDATE ROW trigger trg_notification_channels_upd

try_inet()

try_inet() · 관계

이 대상이 사용하는 구현·계약·의존 · 3개

전체 관계 3개 · 종류 선택·관계도

text argument를 inet로 cast하고 모든 예외를 NULL로 변환한다. 함수 자체는 table을 읽거나 쓰지 않으며 IMMUTABLE STRICT다. 아래 행은 production call site가 읽는 table이다. 정확한 DDL 근거

call-site table caller access/effect 열 조건
assets read/transform ip, domain company/task scope query에서 자유 text를 안전하게 inet 변환
company_scope read predicate net net >>= try_inet(assets.ip) attribution predicate
task_scope read predicate net coverage/scope predicate에서 assets text 변환

sync_task_asset_links() · 관계

이 대상이 사용하는 구현·계약·의존 · 3개

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 4개 · 종류 선택·관계도

NEW.task_ids의 live task를 provenance link로 insert하고 빠진 link를 delete. 정확한 DDL 근거

table access/effect 열 조건
assets read trigger row id, task_ids AFTER INSERT OR UPDATE OF task_ids의 NEW row
tasks read id, deleted_at 요청 task id 중 live task만 선택
task_asset_links write task_id, asset_id, source, source_summary link insert/do-nothing + NEW.task_ids 밖 link delete

stop_deleted_conversation_retest()

stop_deleted_conversation_retest() · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

이 대상을 사용하는 기능·모듈·계약 · 1개

전체 관계 3개 · 종류 선택·관계도

삭제될 conversation의 pending/running retest를 stopped로 전이. 정확한 DDL 근거

table access/effect 열 조건
conversations read trigger row id BEFORE DELETE의 OLD row
finding_retests write status, error, finished_at conversation_id=OLD.id AND status pending/running

Trigger 개별 진입

개별 목적지는 trigger에서 fire table과 function, timing/event/row level, 영향 열을 모두 역탐색한다.

trg_companies_upd

trg_companies_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on companies; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_av2_upd

trg_av2_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on assets; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_exp_upd

trg_exp_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on explorations; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_expnodes_upd

trg_expnodes_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on exploration_nodes; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_llm_upd

trg_llm_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on llm_profiles; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_task_categories_upd

trg_task_categories_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_categories; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_tasks_upd

trg_tasks_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on tasks; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_task_archives_upd

trg_task_archives_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_archives; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_task_templates_upd

trg_task_templates_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_templates; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_task_asset_links_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_asset_links; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_assets_task_links · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

AFTER INSERT OR UPDATE OF TASK_IDS / FOR EACH ROW on assets; sync_task_asset_links()을 실행한다. asset task_ids 뒤 provenance link insert/delete 정확한 DDL 근거

trg_task_llm_profiles_upd

trg_task_llm_profiles_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_llm_profiles; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_agents_upd

trg_agents_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on agents; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_mcp_upd

trg_mcp_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on mcp_servers; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_tools_upd

trg_tools_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on tools; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_conversations_upd

trg_conversations_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on conversations; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_agent_triggers_upd

trg_agent_triggers_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on agent_triggers; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_intercept_rules_upd

trg_intercept_rules_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on intercept_rules; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_conversation_retest_delete

trg_conversation_retest_delete · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE DELETE / FOR EACH ROW on conversations; stop_deleted_conversation_retest()을 실행한다. conversation delete 전에 active retest를 stopped로 전이 정확한 DDL 근거

trg_asset_intercept_rules_upd

trg_asset_intercept_rules_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on asset_intercept_rules; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_task_intercept_rules_upd

trg_task_intercept_rules_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on task_intercept_rules; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

trg_notification_channels_upd

trg_notification_channels_upd · 관계

이 대상이 사용하는 구현·계약·의존 · 2개

전체 관계 2개 · 종류 선택·관계도

BEFORE UPDATE / FOR EACH ROW on notification_channels; set_updated_at()을 실행한다. row update 전에 updated_at을 now()로 덮어씀 정확한 DDL 근거

상위 영역: 데이터 모델과 저장 계약

전체로 돌아가기 · Markdown 원본

검색을 열면 색인을 읽습니다.

등록한 문서 본문에서 검색합니다.