Sql server 在MS SQL Server表中添加列

Sql server 在MS SQL Server表中添加列,sql-server,Sql Server,我想在MS SQL Server中添加一列。它会影响任何现有的存储过程、触发器或dbms作业等吗?另外,在Oracle中,一旦向现有表添加新列,就需要重新编译任何无效对象。在MS SQL Server中如何?例如,如果您的表中有ID、名称和状态列 DECLARE @Table TABLE (id INT, name VARCHAR(20), Status INT) INSERT INTO @Table VALUES (1,'Name') 它将抛出错误列名称或提供的值的数量与表定义不匹配。因为在

我想在MS SQL Server中添加一列。它会影响任何现有的存储过程、触发器或dbms作业等吗?另外,在Oracle中,一旦向现有表添加新列,就需要重新编译任何无效对象。在MS SQL Server中如何?

例如,如果您的表中有ID、名称和状态列

DECLARE @Table TABLE (id INT, name VARCHAR(20), Status INT)
INSERT INTO @Table VALUES (1,'Name')
它将抛出错误
列名称或提供的值的数量与表定义不匹配。
因为在此查询中,仅插入前两列值,并且
状态丢失
。如果添加状态列,则该值不会引发任何错误

因此,无论在哪里使用,您都需要在插入查询中始终提及列名

DECLARE @Table TABLE (id INT, name VARCHAR(20), Status INT)
INSERT INTO @Table (id, name) VALUES (1,'Name')

如果未在INSERT query中指定列名并向表中添加新列,则会影响该查询
。请确保您是否指定了列名。

向现有表中添加列在理论上和最佳实践中都很容易,但实际上并不总是像ALTER table ADD column那样容易

风险在于,任何使用“Select*”或“Insert Values”(未明确说明列名)的过程、视图或应用程序代码可能无法正常运行,或者在表中添加了其他列后无法正常运行


还请注意,可能会有临时表、表变量和表值参数构建在表的基础上,其他列也会影响这些参数。最佳实践和我的数据库开发指导原则规定不要使用“选择*”或“插入值”。

不是答案:问题是关于添加列。它没有回答问题。根据定义,答案应该是对问题的讽刺!3票赞成实际上不是答案的东西!因此,它被打破了。