Sql server中设了一个自动增加字段,有点问题,请各位看看(50分奉送) 你insert时不要往indentity列里insert了,他会自动insert的 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 产生这种问题的原因是这样的,其实自增子段在插入一个新的纪录时自动的生成一个值,可是这个值不会自动的反映到应用程序中,甚至是SQLServer的企业管理器,插入新纪录后,你的应用程序不知道这个自增字段已经有值了,在更新其他字段时,Delphi默认的设置是根据所有的字段来定位一个记录,或者可能你已经设置了用这个字段来定位一个记录,这样Delphi定位时并更新时就不会正确了,就会有key violation[microsft][odbc aql serer driver][sql server]这样的错误,如果允许其他字段为空,那么你可以在插入一个字段后,刷新一下数据集,这样,自增字段的值就会反映到程序中来了。最好的做法是,不要使用自增字段,而让你的应用程序来控制,使这个字段的值唯一,要使这个字段唯一,你可以使用GUID的类型,并且在应用程序中生成新的GUID,生成新的唯一的GUID你可以使用CoCreateGuid这个函数(Win32)。或者你可以用一个存储过程来做插入纪录的动作,而应用程序不干预,不过这种做法其实适合于早期的没有人机交互的批处理的方式,在现代应用软件中很讲究人机交互,所以这种做法并不适合。 补充:在上面我说的用存储过程的方法,你可以让存储过程返回这个自动增长字段的值,要返回这个值需要一些技巧,你可参考SQLServer的帮助(上帝保佑你用的是中文版),其中有一部分篇幅是关于如何在存储过程中获取改变了得字段的值的讨论。你的应用程序获得了这个值以后,可以在DataSetProvider元件的AfterUpdateRecord事件中,将返回的新值付给DeltaDS.FieldByName('你的字段的名称').NewValuw,并且设置DataSetProvider元件中Options中的poPropogateChanges为True,这样新的值就可以返回给客户端了。 应该可以你post后看看会增加吗 分析一条sql语句的意思---------------- 跪求一存储过程(急) 再次向playwarcraft(时间就像乳沟,挤挤还是有的)请教? 在已有的一个表中用SQL语句中建立一个字段,再删除字段,再改个名? 请问一下这样的结果怎么查询出来!谢谢! 哪有SQL Server 2000 reporting service 企业版可以下载? 求助关于使用sql删除记录的语句 关于数据库转换时遇到的问题 各位大虾救命!(ASP访问Oracle8) 各位兄弟快来看啦!!!! 修改表语句优化问题 sql server 一个小问题,麻烦各位朋友了 关于触发器在运用的问题,很难
key violation
[microsft][odbc aql serer driver][sql server]
这样的错误,如果允许其他字段为空,那么你可以在插入一个字段后,刷新一下数据集,这样,自增字段的值就会反映到程序中来了。最好的做法是,不要使用自增字段,而让你的应用程序来控制,使这个字段的值唯一,要使这个字段唯一,你可以使用GUID的类型,并且在应用程序中生成新的GUID,生成新的唯一的GUID你可以使用CoCreateGuid这个函数(Win32)。或者你可以用一个存储过程来做插入纪录的动作,而应用程序不干预,不过这种做法其实适合于早期的没有人机交互的批处理的方式,在现代应用软件中很讲究人机交互,所以这种做法并不适合。
你post后看看会增加吗