“xxxx”表 - 無法修改表。 不能將值 NULL 插入列 'xxxx'


問題

向已有表增加字段

執行下面sql,sql執行增加兩個字段分別:

  1. articleTitle 正標題 [nvarchar](200)
  2. articleSubTitle 副標題 [nvarchar](200)
USE [tg_thirdparty]
GO

/****** Object:  Table [dbo].[WX_Activity]    Script Date: 10/31/2018 10:54:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO


IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = 'WX_Activity'
                        AND T2.NAME = 'articleTitle' ) 
    BEGIN
    
        ALTER TABLE [dbo].[WX_Activity] ADD [articleTitle] [nvarchar](200) NOT   NULL 
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleTitle]  DEFAULT ('') FOR [articleTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleTitle] [nvarchar](200) NOT NULL

     

        EXEC sys.sp_addextendedproperty @name = N'MS_Description',
            @value = N'正標題', @level0type = N'SCHEMA', @level0name = N'dbo',
            @level1type = N'TABLE', @level1name = N'WX_Activity',
            @level2type = N'COLUMN', @level2name = N'articleTitle'


    END
    
GO
    
IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = 'WX_Activity'
                        AND T2.NAME = 'articleSubTitle' ) 
    BEGIN
    
        ALTER TABLE [dbo].[WX_Activity] ADD [articleSubTitle] [nvarchar](200) NOT  NULL 
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleSubTitle]  DEFAULT ('') FOR [articleSubTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleSubTitle] [nvarchar](200) NOT NULL
     

        EXEC sys.sp_addextendedproperty @name = N'MS_Description',
            @value = N'副標題', @level0type = N'SCHEMA', @level0name = N'dbo',
            @level1type = N'TABLE', @level1name = N'WX_Activity',
            @level2type = N'COLUMN', @level2name = N'articleSubTitle'


    END
    
GO
    

 

提示錯誤

消息 4901,級別 16,狀態 1,第 10ALTER TABLE 只允許添加滿足下述條件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定義;或者要添加的列是標識列或時間戳列;或者,如果前幾個條件均未滿足,則表必須為空以允許添加此列。不能將列"articleTitle"添加到非空表"WX_Activity"中,因為它不滿足上述條件。
消息 4901,級別 16,狀態 1,第 9ALTER TABLE 只允許添加滿足下述條件的列: 列可以包含 Null 值;或者列具有指定的 DEFAULT 定義;或者要添加的列是標識列或時間戳列;或者,如果前幾個條件均未滿足,則表必須為空以允許添加此列。不能將列"articleSubTitle"添加到非空表"WX_Activity"中,因為它不滿足上述條件。

 

 

解決方法:

表中已經有數據了,不設置默認值,有要求字段不能為NULL,矛盾了!!

所以先指定默認值,插入字段時,加上默認值 DEFAULT ''

USE [tg_thirdparty]
GO

/****** Object:  Table [dbo].[WX_Activity]    Script Date: 10/31/2018 10:54:46 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

SET ANSI_PADDING ON
GO


IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = 'WX_Activity'
                        AND T2.NAME = 'articleTitle' ) 
    BEGIN
    
        ALTER TABLE [dbo].[WX_Activity] ADD [articleTitle] [nvarchar](200) NOT   NULL DEFAULT ''
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleTitle]  DEFAULT ('') FOR [articleTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleTitle] [nvarchar](200) NOT NULL

     

        EXEC sys.sp_addextendedproperty @name = N'MS_Description',
            @value = N'正標題', @level0type = N'SCHEMA', @level0name = N'dbo',
            @level1type = N'TABLE', @level1name = N'WX_Activity',
            @level2type = N'COLUMN', @level2name = N'articleTitle'


    END
    
GO
    
IF NOT EXISTS ( SELECT  1
                FROM    SYSOBJECTS T1
                        INNER JOIN SYSCOLUMNS T2 ON T1.ID = T2.ID
                WHERE   T1.NAME = 'WX_Activity'
                        AND T2.NAME = 'articleSubTitle' ) 
    BEGIN
    
        ALTER TABLE [dbo].[WX_Activity] ADD [articleSubTitle] [nvarchar](200) NOT  NULL DEFAULT ''
        --ALTER TABLE [dbo].[WX_Activity] ADD  CONSTRAINT [DF_WX_Activity_articleSubTitle]  DEFAULT ('') FOR [articleSubTitle]
        --ALTER TABLE [dbo].[WX_Activity] ALTER COLUMN [articleSubTitle] [nvarchar](200) NOT NULL
     

        EXEC sys.sp_addextendedproperty @name = N'MS_Description',
            @value = N'副標題', @level0type = N'SCHEMA', @level0name = N'dbo',
            @level1type = N'TABLE', @level1name = N'WX_Activity',
            @level2type = N'COLUMN', @level2name = N'articleSubTitle'


    END
    
GO
    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM