У меня возникли некоторые проблемы с реализацией ограничения для уникального ключа.Уникальный ключ, содержащий строковые поля
У этого есть 3 поля, и одна из них - строка. Проблема заключается в том, что я получаю нарушение уникального ключа, когда я отправить эти две строки:
DB
First: Id-type int
Second: PosId-type uniqueidentifier
Third: Description-type nvarchar(256)
Определено ограничений
ALTER TABLE dbo.StAPSachverhalte ADD CONSTRAINT
UQ_myuniqueKey UNIQUE NONCLUSTERED
(
CompanyId,
PosId,
Description
) WITH(STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
C# параметры кода
new SqlParameter("@Description", SqlDbType.NVarChar, 256),
new SqlParameter("@PosId", SqlDbType.UniqueIdentifier),
...
MyParameters1[0].Value = _newData.Description;
MyParameters1[1].Value = _newData.PosId;
CommandText
@"INSERT INTO StAPSachverhalte(
[Description],
[PosId]
)
VALUES (
@Description,
@PosId)
SET @ID = SCOPE_IDENTITY()",
Переданные данные
'1, random GUID, 001'
'1, random GUID, 001 '
Если я не ошибаюсь, оба должны быть действительными, потому что '001' <> '001'.
Ошибка
Cannot insert duplicate key in object 'dbo.XXX'. The duplicate key value is (76, 9bcba4e1-4d16-487c-977f-cda933bb0955, 0001).
Я пытаюсь сохранить данные с нормальным SQLCommand ExecuteNonQuery с помощью Paramenters и я проверить myparameter [индекс] содержит соответствующее значение с пустым пространством в конце.
Любые идеи?
Какие поля в вашей ограничения уникальности? –
три поля должны быть уникальными вместе. Я опустил остальных из них, потому что они почти 15 ... – blfuentes
Какова ваша база данных, как вы объявляете столбцы в базе данных (типы, длины и т. Д.), КОД, который вы используете для выполнения команды SQL, всю информацию, необходимую для помогите вам – Jauch