JetSetColumnDefaultValue 函数

适用于: Windows |Windows Server

JetSetColumnDefaultValue 函数

JetSetColumnDefaultValue 函数可用于更改现有列的默认值。

    JET_ERR JET_API JetSetColumnDefaultValue(
      __in          JET_SESID sesid,
      __in          JET_DBID dbid,
      __in          JET_PCSTR szTableName,
      __in          JET_PCSTR szColumnName,
      __in          const void* pvData,
      __in          const unsigned long cbData,
      __in          const JET_GRBIT grbit
    );

参数

sesid

用于此调用的会话。

dbid

用于此调用的数据库。

szTableName

包含将受影响的列的表的名称。

szColumnName

其默认值将更改的列的名称。

pvData

包含新默认值的输入缓冲区。

cbData

包含新默认值的输入缓冲区的大小。

grbit

保留供将来使用。

返回值

此函数返回具有以下返回代码之一 的JET_ERR 数据类型。 有关可能的 ESE 错误的详细信息,请参阅 可扩展存储引擎错误错误处理参数

返回代码

说明

JET_errSuccess

操作已成功完成。

JET_errClientRequestToStopJetService

无法完成操作,因为与会话关联的实例上的所有活动都因调用 JetStopService 而停止。

JET_errColumnIllegalNull

与 JET_errNullInvalid 相同。

JET_errColumnInUse

此指定列当前正由索引使用。

JetSetColumnDefaultValue 无法更改索引定义中引用的列的默认值。 这是因为这样做可能会更改索引的内容。

JET_errColumnNotFound

此表不存在此指定的列。

JET_errInstanceUnavailable

无法完成操作,因为与会话关联的实例遇到严重错误,要求撤销对所有数据的访问权限以保护该数据的完整性。 此错误仅由 Windows XP 及更高版本返回。

JET_errInvalidDatabaseId

指定的数据库 ID 无效。

JET_errInvalidName

指定的对象名称之一无效。 所有对象名称必须符合同一组规则。 这些规则如下:

  • 对象名称必须由 ASCII 字符组成。

  • 对象名称的长度必须至少为一个字符。

  • 对象名称的长度不得超过 JET_cbNameMost (64) 个字符。

  • 对象名称不能以空格开头。

  • 对象名称不能包含通过0x1F) (0x00 ASCII 控制字符。

  • 对象名称不能包含感叹号 (!) 、句点 (.) 、左方括号 ([) 或右方括号 (]) 字符。

  • 验证后,只有字符串中直到第一个空格的部分 ((如果有任何) )将用于对象名称。 这意味着对象名称也可能不包含空格。

JET_errNotInitialized

无法完成操作,因为与会话关联的实例尚未初始化。

JET_errNullInvalid

无法将列设置为 NULL。 在以下情况下, JetSetColumnDefaultValue 会发生这种情况:

  • cbData 为零。

  • pvData 为 NULL。

因此,无法将列的默认值 () 设置为 NULL 或零长度值。

JET_errObjectNotFound

此数据库不存在此指定的表。

JET_errRestoreInProgress

无法完成该操作,因为正在对与会话关联的实例执行还原操作。

JET_errSessionSharingViolation

同一会话不能同时用于多个线程。 此错误仅由 Windows XP 及更高版本返回。

JET_errTableInUse

此指定的表正由另一个会话使用。

JetSetColumnDefaultValue 需要对表的独占访问权限,以便更改 Windows Server 2003 之前版本的列的默认值。

JET_errTermInProgress

无法完成操作,因为正在关闭与会话关联的实例。

JET_errTransReadOnly

在只读事务范围内尝试更新是非法的。 只读事务是使用对 JetBeginTransaction2 的调用和JET_bitTransactionReadOnly启动的事务。 此错误仅由 Windows XP 及更高版本返回。

JET_errWriteConflict

另一个会话之前已锁定要更新的记录。 此会话尝试的更新将失败。

成功后,给定数据库中给定表中指定列的默认值将永久更改为新的默认值。

失败时,不会更改数据库状态。

备注

无法更改模板表中列的默认值。

对于长文本列和长二进制列,数据库引擎将以无提示方式将列的默认值截断为 255 字节。

要求

要求

客户端

需要 Windows Vista、Windows XP 或 Windows 2000 专业版。

服务器

需要 Windows Server 2008、Windows Server 2003 或 Windows 2000 Server。

标头

在 Esent.h 中声明。

Library

使用 ESENT.lib。

DLL

需要ESENT.dll。

Unicode

实现为 JetSetColumnDefaultValueW (Unicode) 和 JetSetColumnDefaultValueA (ANSI) 。

另请参阅

JET_DBID
JET_ERR
JET_GRBIT
JET_SESID
JetBeginTransaction2
JetStopService