0

我正在使用 C# winform 应用程序,并且我有使用 SQl 服务器的代码:

SqlCommand comm;
comm.CommandText = "alter table anyTable add someColumn int null";
comm.ExecuteNonQuery();

当我在 comm.ExecuteNonQuery(); 之后调试此代码部分时,我想转到 SQL 服务器管理并在相关表上执行“select *”以检查更改。

问题是我无法触摸此表,SQL 服务器“执行查询”很长时间,直到刷新连接才会这样做,但我可以访问其他表。

这个问题并不总是存在,我无法弄清楚它为什么会发生。

感谢您的帮助!!!

4

3 回答 3

2

目标表将被锁定,直到 ALTER TABLE 状态完全完成。数据库需要阻止对该表的访问以保持完整性。

于 2013-03-06T12:09:48.923 回答
0

创建一个按键引用初始表的额外表不是更好吗?

CREATE Original(id int, value1 int PRIMARY KEY(Id))
CREATE Secondary(OriginalId int, ColumnName VARCHAR(50), value INT PRIMARY KEY(OriginalId, ColumnName))

ALTER TABLE Secondary  ADD  CONSTRAINT [FK_Secondary_Original] FOREIGN KEY([OriginalId] )
REFERENCES Original ([Id])
ON DELETE CASCADE

在这种情况下,您将能够通过简单的 INSERT 到辅助表中逐行扩展原始行内容运行时

于 2013-03-06T13:35:24.923 回答
0

感谢大家的帮助。

我的一个 SQL 脚本中有一个未处理的事务...

于 2013-03-19T07:58:26.700 回答