Как ответил GMB, вы не можете сделать это таким образом из-за дубликатов. Ответ GMB - лучший способ решить вашу проблему. Если по какой-то причине вы не можете последовать его совету, возможно, мой ответ поможет.
Вы можете использовать составной первичный ключ в столбцах CountryCode, Division, SubDivision. Затем добавьте подразделение в Table2. А затем укажите этот первичный ключ в ограничении внешнего ключа. (обратите внимание, что в моем примере выдается ошибка, чтобы показать, что значение не может быть удалено)
DROP TABLE IF EXISTS Table2;
DROP TABLE IF EXISTS Table1;
CREATE TABLE Table1
(ID INT IDENTITY(1,1)
, CountryCode CHAR(3)
, Division VARCHAR(4)
, SubDivision VARCHAR(10)
, CONSTRAINT PK_Table1 PRIMARY KEY(CountryCode, Division, SubDivision)
)
INSERT INTO Table1(CountryCode, Division, SubDivision)
VALUES ('IDN', 'A', 'A-1')
, ('IDN', 'B', 'B-1')
, ('IDN', 'B', 'B-2');
CREATE TABLE Table2
(ID INT IDENTITY(1,1) PRIMARY KEY
, CountryCode CHAR(3)
, Division VARCHAR(4)
, SubDivision VARCHAR(10)
, ReportNo VARCHAR(10)
, CONSTRAINT FK_CountryDivision FOREIGN KEY(CountryCode, Division, SubDivision) REFERENCES Table1(CountryCode, Division, SubDivision)
);
INSERT INTO Table2(CountryCode, Division, SubDivision, ReportNo)
VALUES ('IDN', 'A', 'A-1', 'Re001')
, ('IDN', 'B', 'B-1', 'Re002')
, ('IDN', 'B', 'B-2', 'Re003');
DELETE FROM Table1
WHERE Division = 'A';
Конечно, это изменение может добавить целый набор новых проблем, например, когда отчет предназначен для всего подразделения каким должно быть значение подразделения.
ps. Мне пришлось немного изменить примеры таблиц, потому что значения не совпадали, ie строковые значения в столбце int.
SQL fiddle