更改表以添加唯一列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

请帮忙!谢谢

编辑:

我发现只有当数据网格视图中已经有数据时,我才能添加列。我该怎么办?帮助谢谢

更改表以添加唯一列sqlce

我不熟悉sql server ce,但在普通的sql server中,创建具有唯一关键字的列意味着创建一个索引,其中没有2行可以包含null,因为它们不是唯一的。

因此,您需要创建不带唯一关键字的列,然后创建一个允许null的唯一索引。

您可以创建一个忽略空值的唯一索引,如下所示:

CREATE UNIQUE NONCLUSTERED INDEX idx_col1
ON dbo.MyTable(col1)
WHERE col1 IS NOT NULL;