【问题标题】:How to add column in between two columns?如何在两列之间添加列?
【发布时间】:2019-04-18 08:52:27
【问题描述】:

我正在尝试在列之间添加一列并收到以下错误:

消息 259,第 16 级,状态 1,第 10 行: 不允许对系统目录进行临时更新。

这就是我所做的:

select * from 
[INFORMATION_SCHEMA].COLUMNS
where TABLE_NAME = 'Customers' 

Alter table Customers  
Add ContactName varchar(20)

Update INFORMATION_SCHEMA.COLUMNS
set ORDINAL_POSITION = 3
where  TABLE_NAME = 'Customers ' and COLUMN_NAME = 'ContactName'

该列应该移动到第三个位置。

【问题讨论】:

  • 标记问题时请注意,错误的标记(MySQL 代替 sql-server)会导致两个用户发布两个对您无用的答案并浪费他们的时间。
  • 您不要直接修改系统表/视图 - 永远。
  • 并学会在互联网上搜索您遇到的任何错误消息。您不是第一个尝试此技巧的人,解决方案始终相同 - 重新创建表。

标签: sql sql-server


【解决方案1】:
Alter table Customers  
Add ContactName varchar(20)  AFTER `columnthatisprevioustoadded`

【讨论】:

  • 问题被错误地标记为 MySQL,它与 ms sql server 有关(请参阅错误消息和 [...])。如果它与 MySQL 有关,则它是重复的。
【解决方案2】:

Alter 命令默认在表尾创建列

 Alter table Customers  
Add ContactName varchar(20)

您需要使用AFTER 将列放置在某个位置

Alter table Customers  
Add ContactName varchar(20) after column_name_exist_in_position2

column_name_exist_in_position2 = 你的表第二位置列名

【讨论】:

  • @MdMerajAlam 这里是在线演示 dbfiddle.uk/… 看看
  • 问题被错误地标记为 MySQL,它与 ms sql server 有关(请参阅错误消息和 [...])。如果它与 MySQL 有关,则它是重复的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-15
  • 2012-11-10
  • 2011-07-16
  • 2017-12-25
  • 2017-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多