我有一张桌子。有三列的费用在
之下ExpenseId int NOT NULL,
ExpenseName varchar(50) NOT NULL,
Invalid bit NOT NULL
要添加新列(OldCode char(4) not null
),我在Microsoft SQL Server Management Studio中使用了表的设计功能。但我得到以下错误
'费用'表
- 无法修改表格。无法将值NULL插入列' OldCode',table' TransportSystemMaster.dbo.Tmp_Expenses&#39 ;;列不允许空值。 INSERT失败。声明已经终止。
顺便说一句,我已经能够将具有相同规范的相同列添加到同一数据库的其他表中。
任何帮助?
答案 0 :(得分:8)
您的表包含现有记录
您正在推送NOT NULL
类型的新列。
因此对于较旧的记录,数据必须是某种东西。
尝试这样的事情
ALTER TABLE MY_TABLE ADD Column_name INT NULL
GO
UPDATE MY_TABLE <set valid not null values for your column>
GO
ALTER TABLE MY_TABLE ALTER COLUMN Column_name INT NOT NULL
GO
答案 1 :(得分:3)
由于OldCode
为NOT NULL
,您应为其指定默认值。
答案 2 :(得分:3)
如果您的桌子上有一些行,则无法添加不可为空的列,您应为其提供默认值
def _datetime(date_str):
r=datetime.strftime(datetime.strptime(date_str,'%a %b %d %H:%M:%S +0000 %Y'),'%Y-%m-%d %H:%M:%S')
return r
if __name__ == '__main__':
fp = open( 'csk.csv', 'rb' )
reader = csv.reader( fp, delimiter=',', quotechar='"', escapechar='\\' )
c=''
a=[]
sent=[]
dates=[]
for row in reader:
c=row[1] #twitter datetime in these format Wed Apr 22 14:29:00 +0000 2015
b=_datetime(c)
a.append(b)
print a
答案 3 :(得分:1)
您必须为表的所有4个字段指定值,这纯粹是因为,在设计表时,您将列的定义设置为非null。您再次添加一个名为OldCode的新列并设置为非null,所有现成的记录都没有值。这就是它抱怨的原因