I am migrating data from one DB to another and have this script below which looks at users in the DB. My problem is that when executing the code it errors and says thisMsg 515, Level 16, State 2, Line 24Cannot insert the value NULL into column 'id', table 'thejanitor.dbo.users'; column does not allow nulls. INSERT fails.The statement has been terminated.and also thisMsg 515, Level 16, State 2, Line 77Cannot insert the value NULL into column 'id', table 'thejanitor.dbo.user_contract'; column does not allow nulls. INSERT fails.The statement has been terminated.This is my line24INSERT INTO thejanitor.dbo.users ([forename], [surname], [displayname], This is my line77INSERT INTO thejanitor.dbo.user_contract ([user_id], contract_id)How can I get around this problem?USE thejanitorDECLARE @pID INTDECLARE @pForename VARCHAR(100)DECLARE @pSurname VARCHAR(100)DECLARE @pUserName VARCHAR(100)DECLARE @pucID INTDECLARE @pClients VARCHAR(50)DECLARE Users CURSOR FORSELECT DISTINCT id, forename , surname , usernameFROM navitas.dbo.usersWHERE Salt IS NOT NULLAND forename <> 'Deleted'AND (forename IS NOT NULLAND surname IS NOT NULLAND username IS NOT NULL)AND id NOT IN (SELECT SiRPSID FROM MigrationDB.dbo.MigrationLookupWHERE SiRPSTableName = 'users')OPEN UsersFETCH NEXT FROM Users INTO @pID,@pForename,@pSurname,@pUserNameWHILE @@FETCH_STATUS = 0BEGININSERT INTO thejanitor.dbo.users ([forename], [surname], [displayname], [job_title], [department], [username], [password], [salt], [default_contract], [active_since], [last_logon], [force_password_change], [active], [visible], [show_admin], [reset], [application_version]) SELECT DISTINCT [forename], [surname], [display_name], [job_title], [department], [username], [password], [salt], [default_client], [active_since], [last_logon], [force_password_change], [active], [visible], [show_admin], [reset], [application_version]FROM [navitas].[dbo].[users]WHERE forename = @pForename AND surname = @pSurnameAND username = @pUsernameAND salt IS NOT NULLAND forename <> 'deleted'AND id = @pIDIF @@ERROR <> 0BEGININSERT INTO [MigrationDB].[dbo].[ErrorLogging] ([ErrorDetails]) VALUES ('error occured when inserting users. ~ SiRPS ID:'+ CONVERT(VARCHAR,@pID))ENDELSEBEGIN DECLARE @pOID INTSET @pOID = SCOPE_IDENTITY()EXECUTE [MigrationDB].[dbo].[AddDataTolookup] @pID,@pOID,'users'ENDDECLARE clients CURSOR FORSELECT id,[name] FROM navitas.dbo.client WHERE [name] IN (SELECT [name] FROM navitas.dbo.user_clientWHERE [user_id] = @pID)OPEN clientsFETCH clients INTO @pucID,@pClientsWHILE (@@FETCH_STATUS = 0)BEGINDECLARE @pContractID INTDECLARE @pUserId INTSELECT DISTINCT @pUserId = idFROM thejanitor.dbo.usersWHERE forename = @pForenameAND surname = @pSurnameAND username = @pUserNameSELECT DISTINCT @pContractID = id FROM thejanitor.dbo.contractsWHERE [name] = @pClientsIF (@pContractID IS NULL)BEGIN PRINT @pID+ @pForename+@pSurname+@pUserNameENDELSEBEGININSERT INTO thejanitor.dbo.user_contract ([user_id], contract_id)VALUES (@pUserId,@pContractID)ENDFETCH clients INTO @pucID,@pClientsENDCLOSE clientsDEALLOCATE clientsFETCH NEXT FROM Users INTO @pID,@pForename,@pSurname,@pUserNameENDCLOSE UsersDEALLOCATE UsersGODECLARE @pMeID INTDECLARE Client CURSOR FOR (SELECT JanitorID FROM [MigrationDB].dbo.MigrationLookupWHERE SiRPSTableName = 'client')OPEN ClientFETCH NEXT FROM Client INTO @pMeIDWHILE @@FETCH_STATUS = 0BEGININSERT INTO thejanitor.dbo.user_contract ([user_id],contract_id)VALUES (94,@pMeID)FETCH NEXT FROM Client INTO @pMeIDENDCLOSE ClientDEALLOCATE Client