Kev*_*amb 7 sql ddl ms-access vba
我正在编写一些脚本来更新大量的Access表.我想为每个都添加一个列,该列有一个名为"date_created"的字段,该字段是创建记录时的时间戳.通过表视图执行此操作非常简单,只需设置DefaultValue = now()即可.但是,我如何在sql中完成此操作?
这是我目前对已有列的表的尝试.此示例使用"tblLogs".
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT now()
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
更新 - 有没有办法在VBA中执行此操作?
更新2 - 测试所有答案和以下onedaywhen是最短和最准确的
CurrentProject.Connection.Execute _
"ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
Run Code Online (Sandbox Code Playgroud)
我假设:
CURRENT_TIMESTAMP标准SQL中的所谓(不过ACE/Jet不直接支持),不要与SQL Server的TIMESTAMP数据类型混淆;如果您使用此SQL DDL创建了表:
CREATE TABLE tblLogs
(
date_created DATETIME NOT NULL
);
Run Code Online (Sandbox Code Playgroud)
然后以下SQL DDL将添加DEFAULT您的要求:
ALTER TABLE tblLogs ALTER
date_created DATETIME DEFAULT NOW() NOT NULL;
Run Code Online (Sandbox Code Playgroud)
上面的ACE/Jet SQL语法是ANSI-92查询模式的味道.要通过MS Access接口使用它(例如,Query对象的SQL视图),请参阅Microsoft Office Access:关于ANSI SQL查询模式(MDB).要以编程方式使用SQL DDL要求(AFAIK)使用OLE DB,这在VBA中需要(AFAIK)使用ADO.DAO始终使用ANSI-89查询模式语法,其SQL DDL语法缺乏支持DEFAULT.
如果您使用的是Access(而不是ACE/Jet独立版),则可以使用单行VBA(ADO)代码:
CurrentProject.Connection.Execute "ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14233 次 |
| 最近记录: |