xykj-plus/xykj-admin-plus/script/sql/update/sqlserver/update_contract_table.sql
2026-06-13 13:48:51 +08:00

116 lines
4.5 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ----------------------------
-- 合同表结构更新脚本 (SQL Server)
-- 说明:此脚本用于将旧的合同表结构更新为新的结构
-- 请根据实际情况谨慎执行,建议先备份数据
-- ----------------------------
-- ----------------------------
-- 第一步:备份原有数据(可选,建议执行)
-- ----------------------------
-- select * into biz_contract_backup from biz_contract;
-- ----------------------------
-- 第二步:添加新字段(在删除旧字段之前)
-- SQL Server 不支持 if not exists需要先检查列是否存在
-- ----------------------------
if not exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'party_a_name')
begin
alter table biz_contract add party_a_name varchar(200) null;
end
if not exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'party_b_name')
begin
alter table biz_contract add party_b_name varchar(200) null;
end
-- ----------------------------
-- 第三步:迁移数据(如果需要)
-- 如果需要从旧字段迁移数据到新字段在这里写UPDATE语句
-- ----------------------------
-- update biz_contract set party_a_name = customer_name where party_a_name is null;
-- update biz_contract set party_b_name = signing_entity where party_b_name is null;
-- ----------------------------
-- 第四步:设置新字段为非空
-- 注意:需要先确保所有行都有值
-- ----------------------------
-- alter table biz_contract alter column party_a_name varchar(200) not null;
-- alter table biz_contract alter column party_b_name varchar(200) not null;
-- ----------------------------
-- 第五步:删除旧字段
-- ----------------------------
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'delivery_dept_id')
begin
alter table biz_contract drop column delivery_dept_id;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'sales_user_id')
begin
alter table biz_contract drop column sales_user_id;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'accounting_type')
begin
alter table biz_contract drop column accounting_type;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'customer_name')
begin
alter table biz_contract drop column customer_name;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'signing_entity')
begin
alter table biz_contract drop column signing_entity;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'target_profit_rate')
begin
alter table biz_contract drop column target_profit_rate;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'business_tags')
begin
alter table biz_contract drop column business_tags;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'paid_amount')
begin
alter table biz_contract drop column paid_amount;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'unpaid_amount')
begin
alter table biz_contract drop column unpaid_amount;
end
if exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'remark')
begin
alter table biz_contract drop column remark;
end
-- ----------------------------
-- 第六步:添加转包相关字段
-- ----------------------------
if not exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'is_subcontract')
begin
alter table biz_contract add is_subcontract varchar(1) null default '0';
execute sp_addextendedproperty 'MS_Description', '是否转包(0否 1是)', 'SCHEMA', 'dbo', 'TABLE', 'biz_contract', 'COLUMN', 'is_subcontract';
end
go
if not exists (select * from sys.columns where object_id = object_id('biz_contract') and name = 'subcontract_from_id')
begin
alter table biz_contract add subcontract_from_id bigint null;
execute sp_addextendedproperty 'MS_Description', '转包来源合同ID', 'SCHEMA', 'dbo', 'TABLE', 'biz_contract', 'COLUMN', 'subcontract_from_id';
end
go
-- 添加外键约束(可选)
-- if not exists (select * from sys.foreign_keys where name = 'fk_contract_subcontract_from')
-- begin
-- alter table biz_contract add constraint fk_contract_subcontract_from foreign key (subcontract_from_id) references biz_contract(contract_id);
-- end
-- go