更改表以添加唯一列sqlce
本文关键字:唯一 sqlce 添加 | 更新日期: 2023-09-27 18:00:13
我正试图使用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
请帮忙!谢谢
编辑:
我发现只有当数据网格视图中已经有数据时,我才能添加列。我该怎么办?帮助谢谢
我不熟悉sql server ce,但在普通的sql server中,创建具有唯一关键字的列意味着创建一个索引,其中没有2行可以包含null,因为它们不是唯一的。
因此,您需要创建不带唯一关键字的列,然后创建一个允许null的唯一索引。
您可以创建一个忽略空值的唯一索引,如下所示:
CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;