Я добавляю столбец в таблицу как:
RedMarkItemsId (IDENTITY(1,1) NOT NULL PRIMARY KEY)
TaskId (UNIQUEIDENTIFIER)
CreationDate (DATETIME)
CreatedBy (UNIQUEIDENTIFIER)
Я хочу создать столбец вроде:
ALTER TABLE RedMarkItems ADD Item1 BIT DEFAULT(0)
Но когда я пытаюсь вставить какие-то значения:
INSERT INTO RedMarkItems
VALUES (
'9B093907-2072-4F59-A55C-0003CE89EF9E',
GETDATE(),
'6074CAEA-7A8E-4699-9451-16C2EAF394EF')
Выдает ошибку:
Column name or number of supplied values does not match table definition.
Почему я получаю эту ошибку, если устанавливаю DEFAULT(0) в этот новый столбец?
Скрипт создания таблицы:
CREATE TABLE RedMarkItems
(
RedMarkItemsId INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
TaskId UNIQUEIDENTIFIER,
CreationDate DATETIME,
CreatedBy UNIQUEIDENTIFIER
)
Подумайте об этом немного подробнее: вместо этого identity может находиться в любом месте в списке столбцов, поэтому SQL Server не может догадаться, что 3 введенных вами значения должны входить в 3 столбца, которые вы назвали; ты должен это сказать. Это хорошо: формулировка является последовательной, а не чрезмерно благотворительной, делая предположение, что identity окажется первым столбцом, где это предположение может привести к неожиданным результатам и будет работать только в 1 ситуации.


Эта часть SQL недействительна:
INSERT INTO RedMarkItems
VALUES (
'9B093907-2072-4F59-A55C-0003CE89EF9E',
GETDATE(),
'6074CAEA-7A8E-4699-9451-16C2EAF394EF')
Если не все столбцы предоставляются для вставки, вам необходимо явно указать целевые столбцы. Поскольку вы назначаете только 3 столбца, вы, вероятно, захотите:
INSERT INTO RedMarkItems(
RedMarkItemsId,
TaskId,
CreationDate
) VALUES (
'9B093907-2072-4F59-A55C-0003CE89EF9E',
GETDATE(),
'6074CAEA-7A8E-4699-9451-16C2EAF394EF'
);
Похоже, RedMarkItemsId следует заменить на TaskId. Он хочет опустить RedMarkItemsId, поскольку это столбец Identity ...
В моем операторе вставки у меня есть TaskId, CreationDate и CreatedBy, мне не нужно указывать RedMarkItemsId, потому что это IDENTITY (1,1), поэтому это автономное поле @gtosto