如果说联合主键是为了多列来确定唯一性,可是下面的情况程序不让!!!
fRoleOpPowerMemTable.PrimaryKey = new DataColumn[] {
fRoleOpPowerMemTable.Columns["ModelGUID"],
fRoleOpPowerMemTable.Columns["SysPowerID"],
};
事情是这样发生的:
原本有需要从DataTable.Select(vFilter)来涮选数据,可太慢,就给它设了主键(这里的情况不得不用联合主键),设置完再给表里填充数据报错了!
--列“ModelGUID”被约束为是唯一的。值“{F17F0FD9-F8D6-45B4-BC20-262834C3407D}”已存在。 --这些列当前不具有唯一值。
fRoleOpPowerMemTable.PrimaryKey = new DataColumn[] {
fRoleOpPowerMemTable.Columns["ModelGUID"],
fRoleOpPowerMemTable.Columns["SysPowerID"],
};
事情是这样发生的:
原本有需要从DataTable.Select(vFilter)来涮选数据,可太慢,就给它设了主键(这里的情况不得不用联合主键),设置完再给表里填充数据报错了!
--列“ModelGUID”被约束为是唯一的。值“{F17F0FD9-F8D6-45B4-BC20-262834C3407D}”已存在。 --这些列当前不具有唯一值。
这些列当前不具有唯一值。
==============================
表内已经有记录了吧?
看看表中的值,这两个列的组合是否满足主键的唯一性要求
--这些列当前不具有唯一值。
楼主提及的问题,虽然不会经常出现,但偶尔在特殊的条件下,也会产生那样的现象。你可以删除造成不能唯一的一些记录(要小心,不要删除错了),如果有几条记录是相同的,那么就让这几条记录只身下一条(删除时要用rowid作为条件,rowid是肯定不会一样的,这是Oracle的特有的)顺便提一下:在SQL Server这样的数据库中,如果存在两条完全相同的记录就没有办法删除其中一条记录(这种现象在特殊的情况下会出现的,兄弟就碰到过这样的情况),要么全部删除这2条记录,要么全部保留这2条记录,在Oracle中则可以通过rowid来删除其中一条。