Хотя это может быть двухлетний вопрос, и хотя ответы в потоке достаточно верны, я не могу удержаться от желания сказать вам, что на самом деле возможно, что анонимный класс реализует интерфейс, хотя для этого требуется немного творческого обмана.
Еще в 2008 году я писал пользовательского LINQ-провайдера для моего тогдашнего работодателя, и в какой-то момент мне нужно было сказать «мои» анонимные классы из других анонимных, что означало, что они реализуют интерфейс что я мог бы использовать для их проверки. То, как мы это решали, было использование аспектов (мы использовали PostSharp ), чтобы добавить реализацию интерфейса непосредственно в IL. Таким образом, на самом деле, позволяя анонимным классам реализовывать интерфейсы выполнимо, вам просто нужно немного свернуть правила, чтобы добраться туда.
Создайте столбец, но разрешите NULL. Заполните столбец правильными данными из таблицы внешнего ключа. Измените столбец add not null. Добавьте ограничение внешнего ключа.
О некоторых частях ваших вопросов (из года в год):
1.Если вы имеете в виду, что значение по умолчанию было бы настолько умным, и вам не понадобилось бы его менять в будущем, тогда ваш желание ошибочно. почему?
по двум причинам:
2. Он может обрабатывать код, который я вам покажу.
Поэтому, основываясь на этих объяснениях, у вас может быть столбец со значением по умолчанию, который существует в Fkeys, но это не будет чем-то, что вам нужно, и вы должны обновить его в будущей базе при использовании. и для этого вам нужно:
FIRST:
CREATE FUNCTION SelectMinForeignKey () RETURNS INT AS BEGIN DECLARE @FirstID INT SELECT @FirstID = MIN (ID) из DetailTableExample01 RETURN @FirstID END
SECOND:
ALTER TABLE example1 ADD NoNullableCol INT NOT NULL DEFAULT [dbo] .SelectMinForeignKey ()
ALTER TABLE example1 ADD NoNullableCol2 INT NOT NULL DEFAULT [dbo] .SelectMinForeignKey (), FOREIGN KEY (NoNullableCol2) ССЫЛКИ DetailTableExample01 (id);
ALTER TABLE dbo.example1 ADD NoNullableCol INT NOT NULL DEFAULT [dbo] .SelectMinForeignKey (), CONSTRAINT FK_example1_DetailTableExample01 ИНОСТРАННЫЙ КЛЮЧ (NoNullableCol) СПИСОК ЛИТЕРАТУРЫ dbo.DetailTableExample01 (ID) В ОБНОВЛЕНИИ CASCADE ON DELETE CASCADE;
ALTER TABLE dbo.example1 ADD NoNullableCol INT NOT NULL DEFAULT [dbo] .SelectMinForeignKey () GO ALTER ТАБЛИЦА dbo.example1 ADD CONSTRAINT FK_example1_DetailTableExample01 ИНОСТРАННЫЙ КЛЮЧ (NoNullableCol) ССЫЛКИ dbo.DetailTableExample01 (ID) В ОБНОВЛЕНИИ CASCADE ON DELETE CASCADE
ПРИМЕЧАНИЕ. Как вы знаете, имена таблиц и столбцов являются образцами.
THIRD:
CREATE FUNCTION SelectMinForeignKey () RETURNS INT AS BEGIN DECLARE @FirstID INT SELECT @FirstID = MIN (ID) из DetailTableExample01 RETURN @FirstID END GO ALTER TABLE dbo.example1 ADD NoNullableCol INT NOT NULL DEFAULT [dbo] .SelectMinForeignKey (), CONSTRAINT FK_example1_DetailTableExample01 ИНОСТРАННЫЙ КЛЮЧ (NoNullableCol) ССЫЛКИ dbo.DetailTableExample01 (ID) ВКЛ. ОБНОВЛЕНИЕ КАСКАДЫ НА УДАЛИТЬ КАСКАД;
И все готово!
Надеюсь, он решает вашу проблему