多步操作产成的错误。(100分)

  • 主题发起人 主题发起人 xiao__tian
  • 开始时间 开始时间
X

xiao__tian

Unregistered / Unconfirmed
GUEST, unregistred user!
在数据库操作中,经常出现“多部操作产成的错误,请一步一步调试”
请专家指示!
 
具体的操作,环境?
 
我也遇到了这种情况,用TAdoQuery,在UpdateBatch时!至今不明白!
 
是不是你的触发器有问题?去掉再试试。
 
很多情况都会产生这个错误。写出具体的操作,环境?

 
我昨天正好在操作oracle时碰到这个问题,后来发现是字段的长度超了。
 
一步步调试,看哪儿出错
 
我也碰到过,好象是你同时用了如adOQUERY,ADODATASET,ADOCOMMEND对数据库操作。
 
我出现问题的数据库是用SQL Server2000,把出错的那个表的主键“标识”去掉,
问题得到解决,但是不知道为什么会这样!
 
to lqh719大侠:
在数据库操作中,经常出现“多部操作产成的错误,请一步一步调试”
你说的解决方法,主键“标识”为何物?我学Delphi不久,还请不要见笑
 
去看看问题 1202867,这个问题的产生有很多的原因.
 
关注。一步步来吧。
 
tingliuxingyu,主键“标识”是数据库中针对字段的一个属性,你可以参考一下SQL
Server的联机丛书。

创建和修改标识符列
每个表中只能创建一个标识符列和一个全局唯一标识符列。

IDENTITY 属性
标识符列可用 IDENTITY 属性建立,使应用程序开发人员得以对表中所插入的第一行指定
标识数字(Identity Seed 属性),并确定要添加到种子上的增量(Identity Increment
属性)以决定后面的标识数字。在向具有标识符列的表中插入值时,Microsoft® SQL
Server™ 2000 通过递增种子值的方法自动生成下一个标识值。

在用 IDENTITY 属性定义标识符列时应注意以下几点:

一个表只能有一列定义为 IDENTITY 属性,而且该列必须以 decimal、int、numeric、
smallint、bigint 或 tinyint 数据类型定义。


可指定种子和增量值。二者的默认值均为 1。


标识符列不允许空值,也不能包含 DEFAULT 定义或对象。


在设置 DENTITY 属性后,可以使用 IDENTITYCOL 关键字在选择表中引用该列。


可以使用 OBJECTPROPERTY 函数确定一个表是否具有 IDENTITY(标识)列,使用
COLUMNPROPERTY 函数确定 IDENTITY 列的名称。
全局唯一标识符
尽管 IDENTITY 属性自动为表生成行号,但不同表的标识符列可以生成相同的行号。
这是因为 IDENTITY 属性只须在所使用的表上保持唯一。如果应用程序需要生成在整个
数据库或世界各地所有网络计算机的全部数据库中均为唯一的标识符列,请使用
ROWGUIDCOL 属性、uniqueidentifier 数据类型和 NEWID 函数。

使用 ROWGUIDCOL 属性定义全局唯一标识符列时应注意;

一个表只能有一个 ROWGUIDCOL 列,且该列必须定义为 uniqueidentifier 数据类型。


SQL Server 不为该列自动生成值。若要插入全局唯一数值,应为列创建 DEFAULT 定义,
以使用 NEWID 功能生成全局唯一数值。


在设置 ROWGUIDCOL 属性后,使用 ROWGUIDCOL 关键字可在选择列表中引用该列。这与
使用 IDENTITYCOL 关键字引用 IDENTITY 列相似。


可使用 OBJECTPROPERTY 函数确定表是否含有 ROWGUIDCOL 列,使用 COLUMNPROPERTY
函数确定 ROWGUIDCOL 列的名称。


由于 ROWGUIDCOL 属性不强制唯一性,所以应使用 UNIQUE 约束以确保插入 ROWGUIDCOL
列的值是唯一的。


说明 如果表的标识符列经常执行删除操作,标识值间可能会产生断缺,删除的标识值
不能再使用。要避免出现这类断缺,请勿使用 IDENTITY 属性。而应在插入行时,以标
识符列中现有的数值为基础创建确定新标识值的触发器。
 
to lqh719:
thanks!
 
一般情况下 是 应为你没有把上一次的连接关掉,
而连续作了2个提交动作

每次提交sql子后 请把连接关掉

 
后退
顶部