十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
更改长度
创新互联为企业级客户提高一站式互联网+设计服务,主要包括成都网站设计、网站建设、app软件开发公司、小程序制作、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。
if Exists(select A.* from syscolumns A inner join sysobjects B on A.id=B.id where B.type = 'U' and
B.name=upper('youtable') and A.name=lower('youfield '))
alter table youtable
alter column youfield char(60) NULL
go
添加
if not exists(select A.* from syscolumns A inner join sysobjects B on A.id=B.id where B.type='U' and B.name=upper('youtable')and A.name=lower('youfield'))
begin
alter table youtable add youfield datetime null
end
go
动态的把你的sql拼出来,然后用exec()调用。
例如:
declare @str varchar(1000);
select @str='create table ttt(id1 int,id2 int,id3 int.....);'
exec(@str);
************
补充:
************
1、建一个表,保存你要追加的字段名和字段类型
如:create table t_tmp(id int IDENTITY(1,1) not null,col_name varchar(100),col_type varchar(100));
2、把你想要动态追加的字段和类型全写入表中
如:
insert into t_tmp(col_name,col_type) values('t1','int');
insert into t_tmp(col_name,col_type) values('t2','date');
insert into t_tmp(col_name,col_type) values('t3','varchar(100)');
insert into t_tmp(col_name,col_type) values('t4','char(100)');
3、生成动态建表语句,并创建表
declare @str varchar(2000)
set @str='create table ttt('
select @str=@str + col_name+' '+col_type+',' from t_tmp
set @str=substring(@str,1,len(@str)-1)+')'
select @str
exec(@str)
---
以上,希望对你有所帮助。
刚才好像给你回答过了,我再具体说清楚点吧!你如果想实现插入删除和更新都自动是自动c=a+b,就要写出三个触发器,如下:
更新:
create
trigger
tri_update
on
abc
for
update
as
begin
declare
@a
varchar(20)
declare
@b
varchar(20)
declare
@c
varchar(20)
select
@c=a+b,@a=a,@b=b
from
inserted
update
abc
set
c=@c
where
a=@a
and
b=@b
end
插入
create
trigger
tri_insert
on
abc
for
insert
as
begin
declare
@a
varchar(20)
declare
@b
varchar(20)
declare
@c
varchar(20)
select
@c=a+b,@a=a,@b=b
from
inserted
update
abc
set
c=@c
where
a=@a
and
b=@b
end
删除
create
trigger
tri_delete
on
abc
for
delete
as
begin
declare
@a
varchar(20)
declare
@b
varchar(20)
declare
@c
varchar(20)
select
@c=a+b,@a=a,@b=b
from
deleted
update
abc
set
c=@c
where
a=@a
and
b=@b
end
你看行不行,我已经测试过了可以