О частях ваших вопросов (по прошествии многих лет):
1. Если вы имеете в виду, что значение по умолчанию будет таким умным, и вам не нужно будет его менять в будущем, то ваше желание неверно. Зачем?
по двум причинам:
- a) В концепции значения по умолчанию (во всех языках программирования
, базах данных и т. д.) значение по умолчанию — это не то, что динамически заменяет значение чем-то, что вы хотите. Например, Func Sum(a,b,c=10), в этой ситуации, если вы не введете параметр c, он примет его за 10, в противном случае вы должны ввести
что-то вместо этого. поэтому значения по умолчанию являются предсказуемыми и вычисляемыми
значениями, а НЕ интеллектуальными значениями.
- b) Внешние ключи являются чем-то даже более важным, чем необязательный
параметр в методе, из-за реляционных значений в РСУБД, поэтому вам, безусловно, следует редактировать это в будущем, даже, возможно, иногда оно меняется< br /> снова и снова на основе использования БД.
2. Это можно сделать с помощью кода, который я вам покажу.
Поэтому на основе этих объяснений у вас может быть столбец со значением по умолчанию, который существует в Fkeys, но это не то, что вам нужно, и вы должны обновлять его в будущем в зависимости от вашего использования. а для этого нужно:
ПЕРВЫЙ:
- Создайте функцию, которая возвращает действительный и существующий внешний ключ конкретной таблицы, например:
CREATE FUNCTION SelectMinForeignKey()
RETURNS INT
AS
BEGIN
DECLARE @FirstID INT
SELECT @FirstID = MIN(ID) from DetailTableExample01
RETURN @FirstID
END
ВТОРОЕ:
- Затем вы должны изменить свою таблицу, чтобы добавить столбец следующим образом:
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) REFERENCES DetailTableExample01(id);
- или более полный с мгновенным добавлением ограничения и назначаемым именем FK:
ALTER TABLE dbo.example1 ADD
NoNullableCol INT NOT NULL DEFAULT [dbo].SelectMinForeignKey(),
CONSTRAINT FK_example1_DetailTableExample01
FOREIGN KEY (NoNullableCol)
REFERENCES dbo.DetailTableExample01 (ID)
ON UPDATE CASCADE
ON DELETE CASCADE;
ALTER TABLE dbo.example1 ADD
NoNullableCol INT NOT NULL DEFAULT [dbo].SelectMinForeignKey()
GO
ALTER TABLE dbo.example1 ADD
CONSTRAINT FK_example1_DetailTableExample01
FOREIGN KEY (NoNullableCol)
REFERENCES dbo.DetailTableExample01 (ID)
ON UPDATE CASCADE
ON DELETE CASCADE
ПРИМЕЧАНИЕ. Как вы знаете, имена таблиц и столбцов являются примерными.
ТРЕТИЙ:
- Теперь вы должны изменить значения в NoNullableCol по своему усмотрению.
Все в одном:
- Весь запрос будет примерно таким
CREATE FUNCTION SelectMinForeignKey()
RETURNS INT
AS
BEGIN
DECLARE @FirstID INT
SELECT @FirstID = MIN(ID) from DetailTableExample01
RETURN @FirstID
END
GO
ALTER TABLE dbo.example1 ADD
NoNullableCol INT NOT NULL DEFAULT [dbo].SelectMinForeignKey(),
CONSTRAINT FK_example1_DetailTableExample01
FOREIGN KEY (NoNullableCol)
REFERENCES dbo.DetailTableExample01 (ID)
ON UPDATE CASCADE
ON DELETE CASCADE;
И Готово!
Надеюсь, это решит вашу проблему
person
D4NTESPARDA
schedule
27.05.2017