Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wartość pola musi być unikalna, chyba że ma wartość NULL

Tworzę widok z indeksem, który ignoruje wartości null poprzez klauzulę where...tj. jeśli wstawisz wartość null do tabeli, widok nie obchodzi, ale jeśli wstawisz wartość inną niż null, widok wymusi ograniczenie.

create view dbo.UniqueAssetTag with schemabinding
as
select asset_tag
from dbo.equipment
where asset_tag is not null

GO

create unique clustered index ix_UniqueAssetTag
on UniqueAssetTag(asset_tag)

GO

Więc teraz moja tabela sprzętu ma kolumnę asset_tag, która dopuszcza wiele wartości null, ale tylko unikalne wartości inne niż null.

Uwaga:jeśli używasz mssql 2000, musisz "WŁĄCZ ARITHABORT " tuż przed wykonaniem operacji wstawiania, aktualizacji lub usuwania na stole. Jestem pewien, że nie jest to wymagane w mssql 2005 i nowszych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:Przywracanie bazy danych

  2. Jak połączyć się z kilkoma serwerami SQL jednym kliknięciem (grupa zarejestrowanych serwerów) — samouczek SQL Server / TSQL, część 5

  3. Jak dzielić ciągi w SQL Server

  4. Jak uciec od podwójnych cudzysłowów w pełnotekstowej funkcji SQL?

  5. potrzebuję sp, aby wybrać lub zaktualizować moje tabele, a do tego muszę wprowadzić wiele wartości dla jednej zmiennej, jak mogę to zrobić?