sql-server - tipos - restricciones de nombres que puede tener una base de datos.
¿Cómo puedo crear una restricción única de SQL basada en 2 columnas? (5)
Aquí está la sintaxis para crear una RESTRICCIÓN única en comparación con un ÍNDICE único.
ALTER TABLE publishers
ADD CONSTRAINT uqc_pub_name
UNIQUE (pub_name)
Es importante tener en cuenta que existen diferencias sutiles dependiendo del método que utilice para evitar la singularidad de una columna.
Consulte la siguiente referencia de MSDN para ver un tutorial interesante de estos:
http://msdn.microsoft.com/en-us/library/aa224827(SQL.80).aspx
Tengo una mesa como esta:
|UserId | ContactID | ContactName
---------------------------------------
| 12456 | Ax759 | Joe Smith
| 12456 | Ax760 | Mary Smith
| 12458 | Ax739 | Carl Lewis
| 12460 | Ax759 | Chuck Norris
| 12460 | Bx759 | Bruce Lee
Necesito agregar una restricción a esta tabla para que ningún usuario pueda tener identificaciones de contacto duplicadas. Los usuarios están importando datos de varios sistemas externos, por lo que ContactId no será único en todos los ámbitos, sino que será único por usuario.
Sé cómo crear contraints únicos y no nulos basados en columnas individuales, pero ¿cómo puedo crear contraints únicos en 2 columnas?
Puede intentar ALTER TABLE [TABLE_NAME] ADD UNIQUE (column1,column2,column3 ...columnN)
.
Espero que esto ayude a los aplausos.
Puedes agregar restricciones únicas a tus campos:
ALTER TABLE YourTable
ADD CONSTRAINT UQ_UserId_ContactID UNIQUE(UserId, ContactID)
Puedes intentar esto:
CREATE UNIQUE CLUSTERED INDEX index_name ON TABLE (col1,col2)
or
CREATE UNIQUE NONCLUSTERED INDEX index_name ON TABLE (col1,col2)
o
ALTER TABLE [dbo].[TABLE] ADD CONSTRAINT
UNIQUE_Table UNIQUE CLUSTERED
(
col1,
col2
) ON [PRIMARY]
CREATE TABLE [LineItems](
[ID] [int] IDENTITY(1,1) NOT NULL,
[OrderID] [int] NOT NULL,
[LineItemNumber] [int] NOT NULL,
CONSTRAINT [PK_LineItems] PRIMARY KEY CLUSTERED
(
[ID] ASC
),
CONSTRAINT [UC_LineItems] UNIQUE NONCLUSTERED
(
[OrderID] ASC,
[LineItemNumber] ASC
)
)