-- peripheral_info 加自增主键 + asset_id 可空 + star_id + user_id -- 用于支持"扫码时预建 peripheral_info,mint 时回填 asset_id 和 user_id"的流程 -- 1. 加自增主键(原本 asset_id 是 PK,但 mint 时 asset 才创建,需要 NULL) ALTER TABLE peripheral_info ADD COLUMN IF NOT EXISTS id BIGSERIAL; -- 2. 如果 asset_id 当前是 PK,需要 drop;GORM AutoMigrate 会处理 ALTER TABLE peripheral_info DROP CONSTRAINT IF EXISTS peripheral_info_pkey; ALTER TABLE peripheral_info ADD PRIMARY KEY (id); -- 3. asset_id 改为可空默认 NULL(mint 后才回填) ALTER TABLE peripheral_info ALTER COLUMN asset_id DROP NOT NULL, ALTER COLUMN asset_id SET DEFAULT NULL; -- 4. 加 star_id 默认 87(项目主星) ALTER TABLE peripheral_info ADD COLUMN IF NOT EXISTS star_id BIGINT NOT NULL DEFAULT 87; -- 5. 加 user_id(mint 后回填,默认 NULL) ALTER TABLE peripheral_info ADD COLUMN IF NOT EXISTS user_id BIGINT DEFAULT NULL; -- 6. 序列同步 SELECT setval(pg_get_serial_sequence('peripheral_info', 'id'), COALESCE((SELECT MAX(id) FROM peripheral_info), 0)); -- 7. code 加 UNIQUE 约束(SKU/序列号唯一) CREATE UNIQUE INDEX IF NOT EXISTS idx_peripheral_info_code ON peripheral_info(code) WHERE code <> ''; -- 8. 周边缩略图 ALTER TABLE peripheral_info ADD COLUMN IF NOT EXISTS image VARCHAR(500) DEFAULT '';