sql server 2005 как создать уникальное ограничение?

<p>как создать уникальное ограничение для существующей таблицы в sql server 2005?</p><p>я ищу и tsql, и как это сделать в диаграмме базы данных.</p>

<p>команда sql:</p><pre><code>alter table <tablename> add constraint <constraintname> unique nonclustered ( <columnname> ) </code></pre><p>смотрите полный синтаксис <a href="http://msdn.microsoft.com/en-us/library/ms190273.aspx">здесь</a> .</p><p>если вы хотите сделать это из диаграммы базы данных:</p><ul> <li>щелкните правой кнопкой мыши по таблице и выберите «индексы/ключи»</li> <li>нажмите кнопку добавить, чтобы добавить новый индекс</li> <li>введите необходимую информацию в свойствах с правой стороны: <ul> <li>столбцы, которые вы хотите (нажмите кнопку с многоточием, чтобы выбрать)</li> <li>набор уникален для да</li> <li>дать ему соответствующее имя</li> </ul></li> </ul>

<p>в sql server management studio express:</p><ul> <li>щелкните правой кнопкой мыши таблицу, выберите<strong> изменить </strong>или<strong> дизайн (для более поздних версий) </strong></li> <li>щелкните правой кнопкой мыши поле, выберите<strong> индексы/ключи ... </strong></li> <li>нажмите<strong> добавить </strong></li> <li>для<strong> столбцы </strong>, выберите<strong> имя поля </strong>вы хотите быть уникальным.</li> <li>для<strong> введите </strong>, выберите<strong> уникальный ключ </strong>.</li> <li>нажмите<strong> закрыть </strong>,<strong> сохранить </strong>таблицу.</li> </ul>

<pre><code>alter table [tablename] add constraint [constraintname] unique ([columns]) </code></pre>

<p>предупреждение: только одна пустая строка может быть в столбце, который вы установили как уникальный.</p><p>вы можете сделать это с помощью отфильтрованного индекса в sql 2008:</p><pre><code>create unique nonclustered index idx\_col1 on dbo.mytable(col1) where col1 is not null; </code></pre><p>см. <a href="https://stackoverflow.com/questions/377798/field-value-must-be-unique-unless-it-is-null">значение поля должно быть уникальным, если оно не равно null</a> для диапазона ответов.</p>

<pre><code>alter table dbo.<tablename> add constraint <namingconventionconstraint> unique nonclustered ( <columnname> ) on [primary] </code></pre>

<p>я также обнаружил, что вы можете сделать это с помощью диаграмм базы данных.</p><p>щелкнув правой кнопкой по таблице и выбрав индексы/ключи ...</p><p>нажмите кнопку «добавить» и измените столбцы на столбцы, которые вы хотите сделать уникальными.</p><p>изменение уникально для да.</p><p>нажмите закрыть и сохраните диаграмму, и она добавит ее в таблицу.</p>

<p>вы ищете что-то вроде следующего</p><pre><code>alter table dbo.doc\_exz add constraint col\_b\_def unique column\_b </code></pre><p> <a href="http://msdn.microsoft.com/en-us/library/ms190273.aspx">документы msdn</a> </p>

<p>чтобы создать ограничение unique для одного или нескольких столбцов, когда таблица уже создана, используйте следующий sql:</p><pre><code>alter table tablename add unique (columnname1,columnname2, columnname3, ...) </code></pre><p>чтобы разрешить именование уникального ограничения для вышеуказанного запроса</p><pre><code>alter table tablename add constraint un\_constaint\_name unique (columnname1,columnname2, columnname3, ...) </code></pre><p><em> запрос, поддерживаемый mysql/sql server/oracle/ms access. </em></p>

<p>на диаграмме студии управления выберите таблицу, щелкните правой кнопкой мыши, чтобы добавить новый столбец, если необходимо, щелкните правой кнопкой мыши столбец и выберите «проверить ограничения», там вы можете добавить один.</p>

<p>в некоторых ситуациях может быть желательно убедиться, что уникальный ключ не существует до его создания. в таких случаях может помочь скрипт ниже:</p><pre><code>if exists(select * from sys.indexes where name like '<index\_name>') alter table dbo.<target\_table\_name> drop constraint <index\_name> go alter table dbo.<target\_table\_name> add constraint <index\_name> unique nonclustered (<col\_1>, <col\_2>, ..., <col\_n>) go </code></pre>