我正在尝试使用SQL Compact Edition在我的表上添加一列。以前它曾经工作但我现在收到一个错误
无法将重复值插入唯一索引。 [表名=最终尝试,约束名称= UQ__最终尝试_0000000000000228]
我正在使用C#,因为我获取了新的列名(使用文本框)并确定列是否唯一(复选框)。它过去工作然后突然不是。请帮忙!我的代码有点凌乱。对不起,这是:
string constr = "ALTER TABLE ";
if (textBox2.Text.ToString() != "")
{
constr += "[" + table + "] ADD [" + col1 + "]";
if (comboBox2.Text == "text")
{
constr += " nvarchar(300)";
}
else if (comboBox2.Text == "number")
{
constr += " int";
}
else if (comboBox2.Text == "date")
{
constr += " datetime";
}
if (checkBox1.Checked)
{
constr += " unique";
}
}
cmd.CommandText = constr;
cmd.ExecuteNonQuery();
constr
输出类似
ALTER TABLE table ADD COLUMN column1 int unique
请帮忙!谢谢!
修改
我发现只有在数据网格视图中已包含其数据时才能添加列。我该怎么办?救命!感谢!!!
答案 0 :(得分:0)
我不熟悉sql server ce但是在普通的sql server中创建一个带有unique关键字的列意味着创建一个索引,其中没有2行可以在其中包含null,因为它们不是唯一的。
所以你需要创建没有unique关键字的列,然后创建一个允许null的唯一索引。
您可以创建一个忽略空值的唯一索引,如下所示:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;