问题
Can you tell me how to avoid below mentioned exception ?
INSERT INTO [Migrated].[dbo].[Cities] (Name, ZipCode)
SELECT DISTINCT
a.City, a.ZipCode
FROM
[Legacy].[dbo].[Ziplist] AS a
WHERE
(a.City IS NOT NULL AND a.ZipCode IS NOT NULL);
Exception:
Cannot insert the value NULL into column 'IsDeleted', table 'Migrated.dbo.Cities'; column does not allow nulls. INSERT fails.
回答1:
As @jamieD77 commented you are missing the IsDeleted
column in your insert statement.
The error means that the column is marked as "NOT NULL" and therefore a value must be inserted when a new row is created.
So you either need to remove the NULL constraint from the table yourself or insert a value in the column.
INSERT INTO [Migrated].[dbo].[Cities] (Name, ZipCode, IsDeleted)
select DISTINCT a.City,a.ZipCode,0 from [Legacy].[dbo].[Ziplist] as a where (
a.City is not null and a.ZipCode is not null);
For a bit
field which I would assume it is (but you should confirm!) the value 0
would be false
and 1
would be true
. If the field is a different data type these values may have different meanings!!!
回答2:
What the error message says is that the IsDeleted
column is declared NOT NULL
and it does not have a default value. In this case, you are probably inserting non-deleted records by default, so you might want to change column:
alter table cities alter column IsDeleted int not null default 0;
Alternatively, you can write the query to include the column:
INSERT INTO [Migrated].[dbo].[Cities] (Name, ZipCode, IsDeleted)
select DISTINCT zl.City, zl.ZipCode,
from [Legacy].[dbo].[Ziplist] zl
where a.City is not null and a.ZipCode is not null;
These answers assume that IsDeleted
is an integer with "0" for false. If the values are stored differently, then the code needs to be modified appropriately.
回答3:
Simply add the column to insert list and fixed value to select list.
INSERT INTO [Migrated].[dbo].[Cities] (Name, ZipCode, IsDeleted)
select DISTINCT a.City,a.ZipCode, 0 IsDeleted --0 means false
from [Legacy].[dbo].[Ziplist] as a
where (a.City is not null and a.ZipCode is not null);
来源:https://stackoverflow.com/questions/37867659/cannot-insert-the-value-null-into-column-where-using-sql-select-statement