Insert Error: Column name or number of supplied values does not match table definition

Error Message:
Msg 213, Level 16, State 1, Line 8
Insert Error: Column name or number of supplied values does not match table definition.

Severity level:
16.

Description:
This error message appears when during an INSERT operation either the number of supplied column names or the number of supplied values does not match the table definition.

Consequences:
The T-SQL statement can be parsed, but causes the error at runtime.

Resolution:
Error of the Severity Level 16 are generated by the user and can be fixed by the SQL Server user. The column names used in the INSERT statement must match those of the table definition and the supplied values must match in number and type the ones expected in the table definition.

Versions:
All versions of SQL Server

Example(s):
CREATE TABLE #t
(
 c1 INT
 , c2 INT
 , c3 AS c1 * c2
)

INSERT INTO #t SELECT 1, 2, 3
UNION ALL SELECT 2, 4, 6
SELECT *
  FROM #t

DROP TABLE #t

Remarks:
In the example above we create a table #t with three columns c1, c2, and c3. The column c3 is a computed column, whose value is calculated by the multiplication of c1 * c2. For computed column you cannot and should supply a value in an INSERT statement. Because we have supplied a value for this column, the error is raised.

]]>

Leave a comment

Your email address will not be published.