用ADox获得表的唯一索引

ado|索引

adox的功能据说很强大,但是我没感觉出来,因为我在asp下编写了很多程序,都运行不了。不知道什么原因,这里有一个程序可以获得唯一索引。可能有的朋友会做一些通用程序,也就是无论数据结构如何变化,程序不变,从数据录入,修改,删除,到数据检索。所有模块都是完全独立于数据库表的结构的。这样就需要获得该表的唯一索引。因为要通过唯一索引来标示当前要删改的是那条记录。如果一个表是正规的表的话,应该至少有一个唯一索引,因为表应该有主键,而主键就是唯一索引。我尝试用adox.key获得表的主键,出错!不知道什么原因。还有,我也尝试用index的primarykey来获得该索引是否为主键,但是无论什么索引,都返回true。无奈之下,只有通过判断其是否为unique。结果发现这种方法真的很好。只是最后程序返回的是一个由n(n>=1)个字段组成的字符串,中间用逗号(,)分隔开的。不过大多数的唯一索引都是有一个字段组成的。我们还可以根据需要判断这些字段的类型等信息。方然这个也不是获得唯一索引的唯一方法。通过数据连接的openschema方法打开一个模式查询,也可以获得一个表的主关键字,详细方法见 [?这里?] 。

connstr = "Provider=MSDAORA.1;User ID=liujincai;password=ljc1001;Data Source=hp1"
set AdoX = server.createobject("adox.catalog")
set fld = server.createobject("adox.column")
set tt=server.CreateObject("adox.table")
AdoX.ActiveConnection = connstr
set tt=adox.Tables("TB_HOUSE_MAIN")
set kk=server.CreateObject("adox.key")
set idx=server.CreateObject("adox.index")
Response.Write "Table:" & tt.Name
Response.Write " < TABLE border=1>
< TBODY>
< TR bgColor=#e0d0c0>
< TD>column name< /TD>
< TD>column type< /TD>
< TD>columnsize< /TD>< /TR>"
for i=0 to tt.Columns.count-1
set fld = tt.Columns(i)
lType = fld.Type
lSize = fld.DefinedSize
Response.Write " < TR bgColor=#f0e0d0>< TD>" &fld.Name & "< /TD>"
Response.Write ltype
Response.Write "< /TD>< TD>"
Response.Write lsize
Response.Write "< /TD>< /TR>"
next
Response.Write "< /TBODY>< /TABLE>"
cols=""
for i=0 to tt.Indexes.count-1
set idx=tt.Indexes(i)
if idx.Unique=true then
for j=0 to idx.Columns.count-1
cols=cols & "," & idx.Columns(j).Name
next
exit for
end if
next
if cols<>"" then
cols=mid(cols,2,len(cols)-1)
Response.Write "可唯一标示字段:"&cols

时间: 2024-09-20 17:46:37

用ADox获得表的唯一索引的相关文章

并发操作-a,b两个请求并发 注册相同用户名,假如表中字段未设置唯一索引,程序上如何控制唯一性啊

问题描述 a,b两个请求并发 注册相同用户名,假如表中字段未设置唯一索引,程序上如何控制唯一性啊 a,b同时查询表,结果是可以注册的,所以都执行了insert,但用户名相同,这样数据就不唯一了.是会这样吗,如何避免呢? 解决方案 把查询和插入放在同一事务中,可以保证整个事务中数据库数据的一致性,这样应该可以避免你说的问题. 上述并发一起的问题,根源在于查询与插入两个时间点数据库数据不一致导致. 解决方案二: 必须有有个不同的key,比如你可以增加一个字段,为userid,这个不会变,但用户名可以

删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 .

原文:删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005 . 删除指定表的所有索引,包括主键索引,唯一索引和普通索引 ,适用于sql server 2005, 使用说明 : 1,先执行脚本,将存储过程创建在数据库中 2,调用方法,以黄金搭档数据库为例 use velcromfm --数据库名, 根据具体项目替换 go declare @tableName varchar(20) set @tableName='menu' --表名 ,根据实际情况替换e

SQL Server已分区索引的特殊指导原则(2)- 唯一索引分区

一.前言 在MSDN上看到一篇关于SQL Server 表分区的文档:已分区索引的特殊指导原则,如果你对表分区没有实战经验的话是比较难理解文档里面描述的意思.这里我就里面的一些概念进行讲解,方便大家的交流. 二.解读 [对唯一索引进行分区] "对唯一索引(聚集或非聚集)进行分区时,必须从唯一索引键使用的分区依据列中选择分区依据列.此限制将使 SQL Server 只调查单个分区,以确保表中不存在重复的新键值.如果分区依据列不可能包含在唯一键中,则必须使用 DML 触发器,而不是强制实现唯一性.&

OCP1z0-047 :主键与唯一索引

主键包括非空和唯一约束,它会自动创建唯一索引(注:唯一约束也会自动创建唯一索引),测试如下: 1. 创建一个表products gyj@OCM> Create table products( 2  product_id number(6) constraintprod_id_pk PRIMARY KEY, 3  product_name varchar2(15) 4  ); Table created. 2. 查表products的索引 gyj@OCM> select INDEX_NAME,I

mysql中如何查看和删除唯一索引

  mysql中如何查看和删除唯一索引. 查看唯一索引: show index from mytable;//mytable 是表名 查询结果如下: 查询到唯一索引后,如何删除唯一索引呢,使用如下命令: alter table mytable drop index mdl_tag_use_ix;//mdl_tag_use_ix是上表查出的索引名,key_name

Mybatis批量插入唯一索引冲突解决方法

问题描述 Mybatis批量插入唯一索引冲突解决方法 这个问题是批量插入的时候的防重处理,Spring MVC+myIbatis做批量数据插入,因为 需要插入的表的数据量很大,而且要插入的数据很多,要分很多批次进行插入,且为了追求效率,所以不可能对每一条都做是否在数据库中存在唯一键是否存在的校验处理,有没有相关的处理方案可供分析? 解决方案 如果输mysql数据库就直接插入不指定主键就ok了吧,oracle就使用序列 解决方案二: 不指定主键呢?需要主键么 解决方案三: 唯一键是否存在的校验处理

【译】SQL Server索引进阶第八篇:唯一索引

原文:[译]SQL Server索引进阶第八篇:唯一索引     索引设计是数据库设计中比较重要的一个环节,对数据库的性能其中至关重要的作用,但是索引的设计却又不是那么容易的事情,性能也不是那么轻易就获取到的,很多的技术人员因为不恰当的创建索引,最后使得其效果适得其反,可以说"成也索引,败也索引".     本系列文章来自Stairway to SQL Server Indexes,翻译和整理后发布在agilesharp和博客园,希望对广大的技术朋友在如何使用索引上有所帮助.   唯一

unique-select distinct 多个字段,其中有些字段有联合唯一索引,那么其他字段会参与去重吗

问题描述 select distinct 多个字段,其中有些字段有联合唯一索引,那么其他字段会参与去重吗 t1表的c1,c2字段有唯一索引, create unique index indexname on t1 (c1,c2); 那么在执行这个SQL的时候: select distinct t0.c1, t1.c1, t1.c2, t1.c3, t1.c4 from t0, t1 where t0.c5 = t1.c5; 是只有t0.c1, t1.c1, t1.c2三个字段参与去重,还是5个字

tushare宏观数据使用pandas入库,增加唯一索引

1,对pandas入数据库 pandas代码中自带了to_sql的方法可以直接使用. 但是数据字段是text的,需要修改成 varchar的,否则不能增加索引. 在增加了主键之后可以控制数据不能再增量修改了. 增加:dtype类型可以解决 dtype={col_name: NVARCHAR(length=255) for col_name in data.columns.tolist()} to_sql 中带的 if_exists 是针对不存在的数据表操作的.而不是数据. 查看了pandas i