Уникальный идентификатор философии в моем scneario - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть таблица из трех столбцов, которые не являются уникальными. поэтому я добавил в таблицу столбец Id в качестве уникального идентификатора и сделал его основным. Всего один вопрос: если в таблицу будут добавлены две строки с одинаковыми значениями в этих столбцах, что произойдет со второй? это будет добавлено или нет? Как я могу избежать таких вещей в моем сценарии?

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Если ваша цель состоит в том, чтобы обеспечить уникальность трех столбцов, то у вас в основном есть выбор из двух структур:

Create Table tbl_1
(
ColA int
,ColB varchar(32)
,ColC varchar(256)
,Primary Key (ColA, ColB, ColC)
)
GO

ИЛИ

Create Table tbl_2
(
ID int identity(1,1) Primary Key
,ColA int
,ColB varchar(32)
,ColC varchar(256)
,Unique (ColA, ColB, ColC)
)
GO

У каждой техники есть свои преимущества,что лучше, зависит от характера данных и вашего взаимодействия с ними.Однако в обеих структурах значения в любом данном столбце могут повторяться, но комбинация трех должна быть уникальной для каждой строки.

С другой стороны, если вы просто пытаетесь установить PK для данных, которые могут или могутне быть уникальным, то вы можете использовать структуру 2, но без ограничения уникальности.В этом случае каждая строка уникально идентифицируется столбцом ID, но значения других столбцов могут повторяться свободно.

1 голос
/ 11 апреля 2011

Если три столбца без идентификатора не имеют уникального ограничения и не являются частью первичного ключа, вы можете добавить несколько строк с одинаковыми значениями.

Если вы хотите избежать дублирования строкЛучше всего было бы применить уникальное ограничение по крайней мере к одному или нескольким из трех столбцов.Если по какой-то причине вы не можете этого сделать, вы должны опубликовать свою схему и там, где вы думаете, что проблема в том, чтобы получить дополнительную помощь по ней.

Если вы не можете использовать уникальное ограничение, один изИзбегайте дублирования: когда вы собираетесь вставить запись, сначала проверьте, существует ли запись, и если она уже существует, решите, как вы хотите ее обработать.

0 голосов
/ 11 апреля 2011

Второй будет добавлен. Вы можете избежать этого, создав уникальное ограничение.

...