我正在编写许多脚本来更新许多 Access 表。我想为每个具有名为“date_created”的字段添加一列,该字段是创建记录的时间戳。通过表 View 执行此操作很简单,只需设置 DefaultValue = now()。但是,我将如何在 sql 中完成此操作?
这是我目前对已经有该列的表的尝试。本示例使用“tblLogs”。
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT now()
谢谢你的帮助!
更新 - 有没有办法在 VBA 中做到这一点?
更新 2 - 测试了所有的答案和以下 onedaywhen 是最短和最准确的
CurrentProject.Connection.Execute _
"ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
最佳答案
我假设:
CURRENT_TIMESTAMP
在标准 SQL 中(尽管 ACE/Jet 不直接支持)并且不要与 SQL Server 的 TIMESTAMP
混淆数据类型; 如果您使用此 SQL DDL 创建表:
CREATE TABLE tblLogs
(
date_created DATETIME NOT NULL
);
那么下面的 SQL DDL 将添加
DEFAULT
您的要求:ALTER TABLE tblLogs ALTER
date_created DATETIME DEFAULT NOW() NOT NULL;
上面的 ACE/Jet SQL 语法是 ANSI-92 查询模式风格。要通过 MS Access 界面(例如查询对象的 SQL View )使用它,请参阅 Microsoft Office Access: About ANSI SQL query mode (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;"
关于sql - Microsoft Access DateTime Default Now 通过 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/972273/