我将表创建为:
CREATE TABLE [UserLoginAudit] (
UserLogginAuditId INT IDENTITY(1,1) PRIMARY KEY,
EmpGuid UNIQUEIDENTIFIER,
TimeLogged DATETIME,
WorkStation VARCHAR (255) NOT NULL DEFAULT HOST_NAME()
)
但是当我尝试插入:
INSERT INTO [UserLoginAudit]
VALUES
(
@EmpGuid
, @Today
)
它返回:
列名或提供的值数与表不匹配 定义。
我在docs处进行检查,并且正确使用了具有默认值的WorksStation列,但我不知道为什么它不允许我插入默认值。有什么想法吗?
答案 0 :(得分:3)
在没有显式列出列名的情况下,您提供的值数与表定义不符。您可以在插入内容中仅列出EmpGuid
和TimeLogged
列,这将自动插入WorkStation
列的默认值,也可以使用这两列并添加WorkStation
使用DEFAULT
关键字的列以使用默认值。我强烈建议您在执行INSERT
(或任何其他操作,例如SELECT
)时始终列出所有列,以免将来添加其他列时出现任何问题。这也将使您的代码更容易被他人解密。
INSERT INTO [UserLoginAudit] (EmpGuid, TimeLogged)
VALUES (@EmpGuid, @Today)
默认设置:
INSERT INTO [UserLoginAudit] (EmpGuid, TimeLogged, WorkStation)
VALUES (@EmpGuid, @Today, DEFAULT)