res排气auto怎么设置res在sql中什么意思 refresh sql

新闻资讯2026-04-21 00:34:52

当在客户端应用程序或服务器端MSSQLSERVER企业管理器中添加新记录时,如果希望立即刷新显示当前新记录的所有列,比如设置了默认值的RowGuidCol列(默认值为newid()),或IDENTITY自动增量列,首先必须设置编辑方式为行缓冲模式(row buffering mode),不能是表缓冲模式(table buffering mode).其次,必须设置表的主键或UNIQUE约束键,用于定位记录.只要设置了主键或UNIQUE约束键中的任何一个,就可以在MSSQLSERVER企业管理器中立即刷新显示新记录的所有列.如果表中既未设置主键也未设置UNIQUE约束键,则新添加记录无法刷新显示.下图红色框内为表既未设置主键也未设置UNIQUE约束键时添加新记录的情况,蓝色框表示设置了主键或UNIQUE约束键时添加新记录的情况.其中uid列为IDENTITY自动增量列,guid列为ROWGUIDCOL列,默认值为newid(),year列默认值为2006,date默认值为getdate().

res排气auto怎么设置res在sql中什么意思 refresh sql_https://www.jmylbn.com_新闻资讯_第1张

图示:蓝色框内为刷新成功的新记录,红色框内为刷新失败的新记录

当客户端应用程序使用ADO对象操纵表时,如果使用了CursorAdapter对ADO进行封装,则有二种办法可以实现添加新记录的自动刷新.
1.设置CA的InsertCmdRefreshFldList属性或使用CA BUILDER设置RefreshAfterInsert,添加完新记录后CA会根据这些设置自动刷新新记录的列值.
2.不设置CA的与AutoRefresh有关的属性,在客户端按以下步骤连续进行:

a.insert新记录;
    b.tableupdate(.t.,.t.,cTableAlias);
    .RecordRefresh()

自动刷新的实质是通过新记录的主键或UNIQUE约束键的列值获得服务器端刚插入的本记录的所有列值,然后逐个更新客户端本记录的ADO.RecordSet.Fields集合中各个列的值,这一过程由ADORecordSet.update()方法或CA的RefreshAfterInsert内建的机制完成.这一机制为:
1.主键表:
select <columnlist> from tablename where PrimaryKeyColumn = columnvalue
2.非主键表:必须设置UNIQUE约束键.
select <columnlist> from tablename where UniqueKeyColumn = columnvalue
以ROWGUIDCOL列为UNIQUE约束键为例,例如(guid列为ROWGUIDCOL):

oCommandText = "select newid()"
oRecordSet = oCommand.Execute()
cNewId = oRecordSet.fields(0).value  //如果两侧有"{}"必须将"{"替换为"'",将"}"替换为"'"
oRecordSetForInsert.AddNew("guid",cNewId)
oCommandText = "SELECT * FROM tablename WHERE guid = " + cNewId
oRecordSet = oCommandText.Execute()
oRecordSetForInsert.MoveLast()
with oRecordSetForInsert
    .fields(1).value = oRecordSet.fields(1).value
    .fields(...n).value = oRecordSet.fields(...n).value
endwith

通常设置IDENTITY自动增量列为UNIQUE约束键,因为添加新记录后IDENTITY列的值可以通过select @@IDENTITY来获得.但有例外:当IDENTITY列设置了向其它表中添加新记录的添加触发器(Insert Trigger)时,返回的@@IDENTITY值不是当前表的IDENTITY值,而是触发器中最后一个表插入的IDENTITY列值.如果出现了此种例外情况,须将其它列设为UNIQUE约束键,在INSERT语句中指定该列的列名和列值,插入新记录后再查询该列的值.通常选择ROWGUIDCOL列,以保证每次显式指定的值不重复,符合UNIQUE约束,具体的就是在插入新记录时显式地指定ROWGUIDCOL列和newid()值,即插入记录的语句格式为:
oRecordSet.AddNew("ROWGUIDCOL列名称"...,newid()值...)

注意:使用CursorAdapter(CA)添加新记录后的自动刷新只能针对单独的表,而不能是JOIN连接的表,即RecordSet不能是表连接的结果,否则会导致找不到表刷新键错误,即使指定了RecordSet.Properties("Unique Table")属性也无效.