sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Unik begrænsning på tværs af flere tabeller

Tilføj en 4. tabel specifikt for disse værdier, du vil være unikke, og link derefter disse nøgler fra denne tabel til de andre ved hjælp af en en til mange-relation. For eksempel vil du have den unikke tabel med et ID, AppName og ItemName til at udgøre dens 3 kolonner. Så har denne tabel link til de andre.

For hvordan man gør dette her er et godt eksempel Opret et en til mange forhold ved hjælp af SQL Server

EDIT: Dette er, hvad jeg ville gøre, men i betragtning af dine serverbehov kan du ændre det, der er nødvendigt:

CREATE TABLE AllItems(
    [id] [int] IDENTITY(1,1) NOT NULL,
    [itemType] [int] NOT NULL,
    [AppName] [nvarchar](20) NOT NULL,
    [ItemName] [nvarchar](32) NOT NULL,
    CONSTRAINT [pk_AllItems] PRIMARY KEY CLUSTERED ( [id] ASC )
) ON [PRIMARY]

CREATE TABLE Analog(
    [itemId] [int] NOT NULL,
    [Value] [float] NOT NULL
)

CREATE TABLE Discrete(
    [itemId] [int] NOT NULL,
    [Value] [bit] NOT NULL
)

CREATE TABLE Message(
    [itemId] [bigint] NOT NULL,
    [Value] [nvarchar](256) NOT NULL
)

ALTER TABLE [Analog] WITH CHECK 
    ADD CONSTRAINT [FK_Analog_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Analog] CHECK CONSTRAINT [FK_Analog_AllItems]
GO

ALTER TABLE [Discrete] WITH CHECK 
    ADD CONSTRAINT [FK_Discrete_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Discrete] CHECK CONSTRAINT [FK_Discrete_AllItems]
GO

ALTER TABLE [Message] WITH CHECK 
    ADD CONSTRAINT [FK_Message_AllItems] FOREIGN KEY([itemId])
REFERENCES [AllItems] ([id])
GO
ALTER TABLE [Message] CHECK CONSTRAINT [FK_Message_AllItems]
GO

Efter hvad jeg kan se, er din syntaks i orden, så har jeg simpelthen ændret den til denne måde, simpelthen fordi jeg er mere fortrolig med den, men enten burde virke.



  1. SQL-snydeark:Hvad er SQL, SQL-kommandoer og SQL-injektion

  2. søgekriterieforskel mellem Like vs Contains() i oracle

  3. Sådan anvender du at have klausul med Group by i Select Query - SQL Server / TSQL Tutorial Part 131

  4. Sådan installeres Haproxy og Keepalved