ingrese la descripción de la imagen aquí Tengo una tabla ClientsPurchases con la columna BillNo. Me gustaría referir la columna BillNo a la tabla Payments como una clave externa, pero muestra un error.

No hay claves primarias o candidatas en la tabla referida. 'ClientsPurchases' que coinciden con la lista de columnas de referencia en la clave externa 'FK__Payments__BillNo__286302EC'. Msg 1750, nivel 16, estado 0, línea 1

CREATE Table ClientsPurchases
(
    PurchasesId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    PurchasesDetails VARCHAR(75),
    [BillNo] varchar(75) NULL 
)

--My  Payments table as bellow 


CREATE TABLE [dbo].[Payments]
(
    [PaymentId] [int] IDENTITY(1,1) NOT NULL,
    [PayAmount] [decimal](18, 0) NULL,
    [PaymentDate] [datetime] NULL,
    [ClinetId] [int] NULL,
    FOREIGN KEY ([BillNo])  REFERENCES ClientsPurchases(BillNo)     
)

Por favor, aconseje.

1
user5625080 27 jul. 2016 a las 15:21

2 respuestas

La mejor respuesta

El [BillNo] en su ClientsPurchases debe ser único.

Además, creo que su clave externa también debe definirse como una columna en la tabla Payments:

CREATE TABLE [dbo].[Payments]
(
    [PaymentId] [int] IDENTITY(1,1) NOT NULL,
    [PayAmount] [decimal](18, 0) NULL,
    [PaymentDate] [datetime] NULL,
    [ClinetId] [int] NULL,
    [BillNo] [int] NOT NULL,
    FOREIGN KEY ([BillNo])  REFERENCES ClientsPurchases(BillNo)     
)

Obtenga más información sobre cómo crear restricciones de clave externa aquí.

2
evilpenguin 27 jul. 2016 a las 12:29

No puede referirse a BillNo porque no es una clave. Deberías hacerlo NOT NULL y UNIQUE.

0
HoneyBadger 27 jul. 2016 a las 12:26