您好我需要在SQL Server 2008中向表中添加一列。如果我使用下面的脚本:
ALTER TABLE SampleTable ADD SampleColumn bigint NULL
它在表的末尾添加了列。如果我只想使用脚本将列放在表中的某个位置,该怎么办?由于某些难以解释的原因,我无法删除表并执行新的create table脚本。
任何想法和建议!
答案 0 :(得分:6)
列顺序无关紧要。
观察:
SELECT Col1, Col2, Col3
FROM Table
SELECT Col3, Col2, Col1
FROM Table
列顺序仅在您使用SELECT *
时很重要,这是不这样做的另一个原因。
除了重新创建表格外,无法更改元数据中的默认列顺序。
如果您需要一种解决方法,可以创建一个VIEW
来选择所需顺序的字段并使用它。
答案 1 :(得分:1)
如果您可以使用SSMS,那么很简单 - 只需“设计”您的表格(点击表格),添加您的列,然后在列表中的任何位置向上/向下拖动它。
那就是说 - 如果你看到改变脚本这样做(即,那个简单的拖放背后的所有TSQL),实际上有很多实际上是自动进行的(包括重新创建表) )。
我知道列顺序对于喜欢遵循标准组织方法(比如将所有外键都放在顶部等)或有人支持查询/程序的人来说很重要(对不起@JNK)指定列(就像你可以使用插入语句,或根据位置选择)。
答案 2 :(得分:0)
Microsoft SQL Server Management Studio在“工具/选项”菜单下有一个设置。在选项对话框中,单击设计者/表和数据库设计器。在右侧窗格中,您将看到一个复选框“禁止保存需要重新创建表的更改”。如果选中此选项,则会阻止您保存需要重新创建表的表更改。如果您希望能够这样做,请取消选中该框。
答案 3 :(得分:0)
没有其他方法可以在“现有列之间”插入SQL Server表中的列 - 您需要构建临时表并重建旧表。也就是说,列顺序无关紧要 - 您确定需要按顺序插入列吗?
可能最好的办法是只使用GUI,编写脚本,然后将约束名称更改为脚本中合理的内容。你是对的,数字约束名称并不理想,允许SQL Server确定你的对象名称不是最佳做法。
查看以下链接了解更多信息: stackoverflow.com/questions/965927/inserting-column-between-other-columns-in-sql-server-using-script