- 论坛徽章:
- 0
|
本帖最后由 liyihongcug 于 2011-03-09 19:24 编辑
开发了一个档案管理软件 (有30多个单位在用)
现在要对其进行升级打补丁 需要调整SQLserver表中增加一个字段。
问题:我发布了1。0的补丁 里面增加了2个字段a,b
现在要发布1。1版的补丁 还需新增一个字段 c
我想在1。1版的补丁中实现 首先判断是否已打上1。0版的补丁 即是否存在字段a,b 如不存在 就执行增加该两字段的代码 ,存在就跳过
不知各位大大谁知道在SQL Server中如何判断表中是否已存在某字段
只剩70分了 实在不好意思 各位老大帮帮忙把
来自:SuperSoft, 时间:2004-4-1 8:59:11, ID:2532734
TADOQuery用TFields属性啊
读表判断一下即可
来自:yf168, 时间:2004-4-1 9:02:23, ID:2532743
看看 syscolumns(各表的所有字段),sysobjects(所有的表) 都在里面呢
通过ID连的,你自己看看 就知道[ ]
来自:TYZhang, 时间:2004-4-1 9:02:30, ID:2532744
syscolumns表查看字段
sysobjects表查看用户表,两个配合使用。
来自:kk2000, 时间:2004-4-1 9:06:43, ID:2532757
if exists(select 1 from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME=@BillType AND COLUMN_NAME='BillNo')
这个应该是你要的!@BillType 指的是表的名称
来自:gzyhl, 时间:2004-4-1 9:07:58, ID:2532762
用Table1.GetFieldNames(listbox1.Items)将表中字段读入到ListBox1列表中,
再判断是否有你要的字段。
来自:lixy, 时间:2004-4-1 9:20:10, ID:2532796
写一个例子:
if not exists(select B.name from sysobjects A,syscolumns B
where A.id=B.id and
A.type='U' and
A.name='TableName' and
B.name='FieldName' )
alter table TableName add FieldName varchar(30) null
来自:过河卒, 时间:2004-4-1 16:27:45, ID:2533988
利用Sql Server中自带的系统过程sp_column;方法:adoquery1.sql.add('sp_column tablename'),在我们进行数据库编程的时候,可能会遇到这样的情形,需要对某个表或字段是否存在进行判断,这个时候,我们可以打开Management Studio或者企业管理器,在本机->Databases->System Databases->master->Views->System Views找到一系列预制好的视图,此间我们可以找到关于整个Sql Server所有数据库实例的各种有用的信息。其实系统表master本身就是一个关乎维护整个Sql Server系统的数据库。如图:
所有的试图中,有两个试图分别名叫sys.tables和sys.columns。他们分别是关于系统中所有表和所有字段的试图。要想知道一个表是否存在可以这样写:
IF (SELECT count(*) FROM sys.tables WHERE name = '表1') = 0 ......
其中“表1”为我们想要查找的表名,省略号是之后我们想进行的动作,比如我们可以create table等。判断一个字段是否存在的方法照葫芦画瓢:
IF (SELECT count(*) FROM sys.columns WHERE name = '列1') = 0 ......
要想知道具体某一表下某个字段是否存在可以这样写:
IF (SELECT count(*) FROM sys.columns WHERE object_id =
(SELECT object_id FROM sys.tables WHERE name = '表1')
and name = '列1') = 0......
其中object_id是每个表在整个Sql Server中的全局ID,上面的SQL语句可以判断在表1下是否有列1这个字段,很简单。
master数据库在Sql Server中起着很特别的作用,仔细研究一下master这个数据库,我们还可以挖掘出很多别的有用信息,这些信息在我们进行数据库操作时有时特别有用,暂不一一列举。
--判断[TestDB]是否存在
if exists(select 1 from master..sysdatabases where name='TestDB')
print 'TestDB存在'
else
print 'TestDB不存在'
--判断表[TestTb]是否存在
if exists(select * from TestDB..syscolumns where id=object_id('TestDB.dbo.TestTb'))
print '表TestTb存在'
else
print '表TestTb不存在'
--判断[TestDB]数据中[TestTb]表中是否存在[Name]字段
if exists(select * from TestDB..syscolumns where id=object_id('TestDB.dbo.TestTb') and name
'Name')
print '字段Name存在'
else
print '字段Name不存在' |
|