У меня есть определение таблицы:
CREATE TABLE [dbo].[T] (
[A] NVARCHAR (128) NOT NULL,
[B] NVARCHAR (128) NOT NULL,
[C] BIT NOT NULL,
[D] INT NOT NULL,
[E] DATETIME NOT NULL,
CONSTRAINT [PK_dbo.T] PRIMARY KEY CLUSTERED (A,B,C)
);
И частично еще одно:
CREATE TABLE [dbo].[W] (
[A] INT IDENTITY(1,1),
[B] NVARCHAR (128) NOT NULL,
[C] BIT NOT NULL,
[D] INT NOT NULL,
[E] TIME NULL,
[F] TIME NULL,
CONSTRAINT [PK_dbo.W] PRIMARY KEY CLUSTERED ([A] ASC),
CONSTRAINT [FK_dbo.W_T] FOREIGN KEY(PARSENAME(REPLACE([B], '_', '.'), 2), PARSENAME(REPLACE([B], '_', '.'), 1), [C]) REFERENCES T(A,B,C) ON DELETE CASCADE
);
Это не работает, потому что не позволит мне поместить функцию вограничение внешнего ключа.
T.A_T.B
равно W.B
Я пытаюсь сказать, что все W
должны соответствовать T
, где W.B
равно CONCAT(T.A, '_', T.B)
и W.C
равноT.C
Затем, если запись в T
удалена, все соответствующие W
на основе внешнего ключа должны быть удалены.