我正在使用C#winform应用程序,我使用SQl服务器获得此代码:
SqlCommand comm;
comm.CommandText = "alter table anyTable add someColumn int null";
comm.ExecuteNonQuery();
当我在comm.ExecuteNonQuery();之后调试此代码部分时,我想转到SQL服务器管理并在相关表上执行“select *”以检查更改。
问题是我无法触摸这个表,SQL服务器“执行查询”已经很长时间了,直到刷新连接才会这样做,但是我可以找到另一个表。
这个问题并不总是存在,我无法弄清楚它为什么会发生。
感谢您的帮助!!!
答案 0 :(得分:2)
目标表将被锁定,直到ALTER TABLE语句完全完成。数据库需要阻止访问该表以保持完整性。
答案 1 :(得分: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到辅助表
,就可以逐行扩展原始行内容运行时答案 2 :(得分:0)
谢谢大家的帮助。
我的一个SQL脚本中有一个打开的事务......