Я создаю таблицу как:

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
Jonathan 29 Мар 2019 в 22:17

1 ответ

Лучший ответ

Без явного перечисления имен столбцов количество предоставленных вами значений не согласуется с определением таблицы. Вы можете указать только столбцы 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)
3
userfl89 29 Мар 2019 в 19:30