-- 腾讯广告音乐素材表 CREATE SEQUENCE IF NOT EXISTS tencent_audio_id_seq START WITH 1 INCREMENT BY 1; CREATE TABLE IF NOT EXISTS tencent_audio ( id BIGINT NOT NULL DEFAULT nextval('tencent_audio_id_seq'::regclass), tenant_id BIGINT NOT NULL DEFAULT 0, creator VARCHAR(100) DEFAULT '', created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, updater VARCHAR(100) DEFAULT '', updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP, deleted_at TIMESTAMP WITH TIME ZONE, -- 业务字段 audio_id VARCHAR(100) NOT NULL, cover_image_url TEXT, audio_name VARCHAR(500), author VARCHAR(200), duration NUMERIC(10, 2), expire_time BIGINT, feel_tags JSONB, genre_tags JSONB, -- 本地校验状态 verify_status VARCHAR(20) DEFAULT 'PENDING' NOT NULL, -- PENDING:待校验, VERIFIED:已校验, REJECTED:已拒绝 verified_at TIMESTAMP WITH TIME ZONE, -- 校验时间 verified_by VARCHAR(100), -- 校验人 PRIMARY KEY (id) ); COMMENT ON TABLE tencent_audio IS '腾讯广告音乐素材表'; COMMENT ON COLUMN tencent_audio.id IS '主键ID'; COMMENT ON COLUMN tencent_audio.tenant_id IS '租户ID'; COMMENT ON COLUMN tencent_audio.creator IS '创建人'; COMMENT ON COLUMN tencent_audio.created_at IS '创建时间'; COMMENT ON COLUMN tencent_audio.updater IS '更新人'; COMMENT ON COLUMN tencent_audio.updated_at IS '更新时间'; COMMENT ON COLUMN tencent_audio.deleted_at IS '软删除时间'; COMMENT ON COLUMN tencent_audio.audio_id IS '音乐ID'; COMMENT ON COLUMN tencent_audio.cover_image_url IS '封面图片URL'; COMMENT ON COLUMN tencent_audio.audio_name IS '音乐名称'; COMMENT ON COLUMN tencent_audio.author IS '作者'; COMMENT ON COLUMN tencent_audio.duration IS '时长(秒)'; COMMENT ON COLUMN tencent_audio.expire_time IS '过期时间戳'; COMMENT ON COLUMN tencent_audio.feel_tags IS '情感标签数组'; COMMENT ON COLUMN tencent_audio.genre_tags IS '风格标签数组'; -- 唯一索引:根据audio_id判断是否存在 CREATE UNIQUE INDEX idx_tencent_audio_audio_id ON tencent_audio(tenant_id, audio_id); CREATE INDEX idx_tencent_audio_author ON tencent_audio(tenant_id, author); CREATE INDEX idx_tencent_audio_expire_time ON tencent_audio(expire_time);