2011-07-25 53 views
-4

我想添加或更新使用alter table的列,如果我要添加一个新列我想要显示错误。我使用下面如何在SQL Server 2008中的表格之间插入列

alter table Personal_Details alter columns DOB datetime 

的代码,如果我取消空不空,然后它会显示列不允许空值;更新失败;

我想插入列之间的字段不是结束。

Plese修复我的bug,

在此先感谢。

+1

您是否正在尝试ALTER或ADD列?你是否正在对现场数据库做这件事? – BonyT

+0

你的更新陈述不知道你在做什么...... 你可以粘贴你的表的创建代码以及 – Mulki

+0

你是什么意思插入字段之间的列?当然,你如何在表格定义中出现字段对你来说没有任何意义? – BonyT

回答

3

列声明中列的位置与NULL或NOT NULL无关。

如果要添加你想成为NOT NULL(任何类型)的列,即要在该列禁止NULL值,表已经包含了一些行,你必须还提供一些默认值。例如:

ALTER TABLE Personal_Details 
ADD COLUMN DOB datetime NOT NULL DEFAULT (GETDATE()) 

否则发动机将尝试添加该列与空值作为其值,这将违反NOT NULL属性和变化,因此,将被还原。

基本上,当列想要在列已包含NULL时设置现有的列的NOT NULL属性时,情况基本相同。但在这种情况下,您必须通过用值替换或删除相应的行来显式消除更改前的NULL。

来源:

0

1)乌拉圭回合与不为空的问题将列

使用

ALTER TABLE Personal_Details ADD COLUMN DOB datetime NULL 

更新DOB列与所需的日期并确保列 中没有空值,然后改变列使用

ALTER TABLE Personal_Details ALTER COLUMN DOB datetime not NULL 

2)对于你的列到最后的问题......

  1. 你不应该担心......列的排列顺序并不重要......除非你用可怜的方式访问数据按列顺序..在这种情况下.....应该停止访问它按列顺序...
  2. 如果列顺序真的很重要,你可以使用设计选项在sql管理表中更改它(右键单击表>设计并拖动列到它所需的位置。)
相关问题