Files
dpb/backend/sql/weld_plan_trace.sql
T

29 lines
1.8 KiB
SQL
Raw Normal View History

-- ============================================================
-- 计划↔目标↔试验 可追溯链(v2.27 批6)
-- ------------------------------------------------------------
-- 幂等。bre_plan 此前是彻底孤立的根表(无出向 FK、无入向 FK),
-- 目标/试验都无法上溯到计划。本脚本补齐两条闭合链:
-- plan → target → cross_combination → tree
-- plan → trial → trial_study → tree
-- 并让 trial 直接挂载目标(trial → target)。
-- 列均可空(既有数据不受影响),ON DELETE SET NULL(计划/目标删除不级联删下游)。
-- ============================================================
ALTER TABLE bre_target ADD COLUMN IF NOT EXISTS plan_id integer;
ALTER TABLE bre_target ADD CONSTRAINT fk_bre_target_plan_id
FOREIGN KEY (plan_id) REFERENCES bre_plan(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_target_plan_id ON bre_target(plan_id);
COMMENT ON COLUMN bre_target.plan_id IS '所属育种计划(bre_plan.id);计划→目标→组合→树 可追溯链起点';
ALTER TABLE bre_trial ADD COLUMN IF NOT EXISTS plan_id integer;
ALTER TABLE bre_trial ADD CONSTRAINT fk_bre_trial_plan_id
FOREIGN KEY (plan_id) REFERENCES bre_plan(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_trial_plan_id ON bre_trial(plan_id);
COMMENT ON COLUMN bre_trial.plan_id IS '所属育种计划(bre_plan.id);计划→试验→试验点→树 可追溯链起点';
ALTER TABLE bre_trial ADD COLUMN IF NOT EXISTS target_id integer;
ALTER TABLE bre_trial ADD CONSTRAINT fk_bre_trial_target_id
FOREIGN KEY (target_id) REFERENCES bre_target(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_trial_target_id ON bre_trial(target_id);
COMMENT ON COLUMN bre_trial.target_id IS '服务育种目标(bre_target.id);试验直接挂载目标';