116 lines
4.5 KiB
Transact-SQL
116 lines
4.5 KiB
Transact-SQL
-- ----------------------------
|
||
-- 合同表结构更新脚本 (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
|