Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Добавить в Foreign key свойство On Update  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1976
Дано: Две таблицы, в одной создан primary key, во второй - foreign.
При создании foreign key забыли прописать опцию ON UPDATE SET DEFAULT

CREATE TABLE ItemsTypes
(
ItemTypeID int identity(1, 1) primary key,
ItemType nvarchar(20) not null,
);
GO
INSERT INTO ItemsTypes(ItemType)
VALUES(N'Miscellaneous'),(N'Shirts'),(N'Dresses'),(N'Pants');
GO

CREATE TABLE StoreItems
(
ItemCode nchar(10) not null primary key,
ItemTypeID int DEFAULT 1,
Name nvarchar(50),
Size nvarchar(20) not null,
UnitPrice money,
constraint FK_EE FOREIGN KEY(ItemTypeID)
REFERENCES ItemsTypes(ItemTypeID)
-- ON UPDATE SET DEFAULT
);
GO

Как можно исправить эту ошибку, кроме как удаления ограничения и создания его заново?
Если можно, все возможные варианты, включая использование встроенных хранимок сервера.

Пока только этот вариант:
alter table StoreItems
drop constraint FK_EE
go
alter table StoreItems
add constraint FK_EE FOREIGN KEY(ItemTypeID)
REFERENCES ItemsTypes(ItemTypeID)
ON UPDATE SET DEFAULT
2 июл 11, 00:23    [10910178]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
DaniilSeryi
Пока только этот вариант:
Вы лучьше задачу расскажите. Чем это не подходит этот вариант и что ещё нельзя использовать?
2 июл 11, 00:38    [10910243]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
DaniilSeryi
alter table StoreItems
drop constraint FK_EE
go
alter table StoreItems
add constraint FK_EE FOREIGN KEY(ItemTypeID)
REFERENCES ItemsTypes(ItemTypeID)
ON UPDATE SET DEFAULT


а чем не устраивает этот вариант?
Или в таблицу идут вставки каждые 5 миллисекунд?
тогда обернуть в транзакцию, чтобы операция стала атомарной.
2 июл 11, 01:33    [10910393]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1976
Вопрос не в том, что мой вариант чем-то плох, вопрос в том, чтобы иметь представление о всех возможных вариантах решения задачи.
Может, и нельзя другими способами, а может, и можно - просто хочется знать все возможные варианты. Ну и потренироваться с ними, само собой.
2 июл 11, 03:58    [10910618]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
DaniilSeryi,

Приведенный вариант - претендует на звание оптимального, если его обернуть в транзакцию.
2 июл 11, 05:18    [10910633]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
DaniilSeryi,

Оптимальным вариантом принято считать решение поставленной задачи с минимальными трудозатратами за минимальное время.
Дополнительных трудозатрат на оборачивание в одну транзакцию - почти ноль.
Время выполнения на сервере - весьма небольшое.
Что еще необходимо-то?
2 июл 11, 05:42    [10910636]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
DaniilSeryi
Вопрос не в том, что мой вариант чем-то плох, вопрос в том, чтобы иметь представление о всех возможных вариантах решения задачи.
А осознание представления о всех возможных вариантах решения задачи - может затянуться на годы...
DaniilSeryi
Может, и нельзя другими способами, а может, и можно - просто хочется знать все возможные варианты. Ну и потренироваться с ними, само собой.
Да стопудняк можно!!! Можно даже написать свой парсер файлов БД, и на остановленном сервере править бинарники файлов базы. Это еще один из всех возможных вариантов. А ОНО НАДО?
Еще вариант - нанять Билла Гейтса за безумное бабло.
Еще вариант, застрелиться, и проблема отпадёт сама собой.
Мне продолжать перечислять ВСЕ возможные варианты?
2 июл 11, 05:49    [10910640]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1976
Гм... Ну раз иной вменяемой T-SQL альтернативы вышеприведённому коду нет - тема закрыта.
Спасибо всем.
2 июл 11, 08:59    [10910708]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
DaniilSeryi,

Не в обиду, наверняка есть еще пяток простых способов...
Просто... Зачем изобретать велосипед, если вот он, уже был в этой ветке?
И уже озвучен, и он - разовый, и он не долго выполняется, и он прост в реализации...
2 июл 11, 09:26    [10910741]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31964
Makar4ik
Не в обиду, наверняка есть еще пяток простых способов...
Ни одного.
2 июл 11, 10:22    [10910821]     Ответить | Цитировать Сообщить модератору
 Re: Добавить в Foreign key свойство On Update  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
alexeyvg
Makar4ik
Не в обиду, наверняка есть еще пяток простых способов...
Ни одного.

Ну хоть один - наверняка кто-то в рукаве держит...
Я знаю местную публику.
У них в рукавах по пиццот штук BFG9000 у каждого. И IDDQD+IDKFA
2 июл 11, 10:26    [10910827]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить