Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284

Инструкция UPDATE

08.12.2014, 18:19. Показов 4124. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите новичку разобраться со следующим примером. У меня есть связанные между собой внеш ключами табл1, табл2, табл3. Если я обновляю запись в табл1, нужно, чтобы в табл2 и табл3 тоже происходили изменения. Но когда я в запросе использую инструкцию UPDATE, программа выдает ошибку The UPDATE statement conflicted with the REFERENCE constraint "fk7". The conflict occurred in database "project"...
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.12.2014, 18:19
Ответы с готовыми решениями:

Инструкция MERGE!
Господа форумчане, есть две таблицы с идентичной структурой (ID, ФИО, год обучения)... Нужно вродь как синхронизировать данные между...

Триггер с after update не работает, а с for update работает
Не могу понять, почему так происходит? В нэте пишут, что after/for это the same . Но все же. В начале прописал AFTER UPDATE и этот триггер...

Инструкция Insert
Здравствуйте. У меня есть таблица, в ней 5 столбцов, 4 из них заполнены. Мне надо заполнить 5ый. Данная инструкция, вставляет в нужный мне...

13
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
09.12.2014, 07:24
Это вы добиваетесь, чтобы первичный ключ в справочнике был без разрывов в нумерации? Удачи...
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 09:36  [ТС]
Цитата Сообщение от cygapb-007 Посмотреть сообщение
Это вы добиваетесь, чтобы первичный ключ в справочнике был без разрывов в нумерации
нет. мне просто нужно изменить запись одновременно в нескольких таблицах. Неужели никто не может объяснить как или объяснить что это невозможно.
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
09.12.2014, 10:15
Цитата Сообщение от Lar4ik Посмотреть сообщение
нет. мне просто нужно изменить запись одновременно в нескольких таблицах.
Вам ничто не мешает просто изменить записи в нескольких таблицах, но если вы видите ошибку "The UPDATE statement conflicted with the REFERENCE constraint "fk7". The conflict occurred in database "project"...", то это означает, что вы хотите не просто изменить запись, вы хотите изменить первичный ключ, на который ссылаются внешние ключи из других таблиц. Как правила, подобная операция не имеет смысла, но если сильно хочется, то можно создавать внешний ключ с аргументом ON UPDATE CASCADE.
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 10:36  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
создавать внешний ключ с аргументом ON UPDATE CASCADE.
он у меня и создан таким образом
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
09.12.2014, 12:53
Цитата Сообщение от Lar4ik Посмотреть сообщение
программа выдает ошибку The UPDATE statement conflicted with the REFERENCE constraint "fk7". The conflict occurred in database "project"...
Это срабатывает механизм защиты ссылочной целостности базы, и означает это (обычно), что в справочнике нет записи с указанным вами кодом.
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 14:06  [ТС]
Цитата Сообщение от cygapb-007 Посмотреть сообщение
Это срабатывает механизм защиты ссылочной целостности базы, и означает это (обычно), что в справочнике нет записи с указанным вами кодом.
так что мне теперь делать, удалить внешние ключи? просто вам людям знающим многие вещи очевидны. а я так и не поняла как мне решить мою задачу
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
09.12.2014, 14:17
Цитата Сообщение от Lar4ik
так что мне теперь делать
не выполнять действия, нарушающие ссылочную целостность. Не нужно изменять значение из первичного ключа, если на него ссылаются внешние ключи. Не нужно внешнему ключу устанавливать значение, которое на момент выполнения команды отсутствует в родительской таблице. В каком месте вы нарушили ссылочную целостность, не ясно, так как вы не привели ни структуру таблиц ни выполняемый код.
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 15:31  [ТС]
SQL
1
2
3
4
USE project;
UPDATE Паспорт
    SET Номер_катера=456
        WHERE Номер_катера=123;
Миниатюры
Инструкция UPDATE  
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
09.12.2014, 16:01
Lar4ik, у вас 2 внешних ключа ссылаются на изменяемое поле номер_катера. Оба ли ключа созданы с аргументом ON UPDATE CASCADE?
1
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 16:13  [ТС]
Цитата Сообщение от kodv Посмотреть сообщение
Оба ли ключа созданы с аргументом ON UPDATE CASCADE?
да, оба
SQL
1
2
3
4
5
6
7
8
9
10
USE project;
CREATE TABLE Рейсы (Номер_рейса INT IDENTITY (1,1),
                    Номер_катера INTEGER NOT NULL,
                    Дата_выхода DATE NOT NULL,
                    Время_выхода TIME NOT NULL,
                    Дата_возвращения DATE NOT NULL,
                    Время_возвращения TIME NOT NULL,
            CONSTRAINT pk2_id PRIMARY KEY (Номер_рейса),
            CONSTRAINT fk6 FOREIGN KEY (Номер_катера) REFERENCES Паспорт ON UPDATE CASCADE
            );
SQL
1
2
3
4
5
6
7
8
9
10
USE project;
CREATE TABLE Команда (ID INT IDENTITY (1,1),
                        Имя_рыбака CHAR (20) NOT NULL,
                        Номер_должности INT NOT NULL,
                        Адрес CHAR (30) NOT NULL,
                        Номер_катера INT NOT NULL,
                CONSTRAINT pk3_id PRIMARY KEY (ID),
                CONSTRAINT fk7 FOREIGN KEY (Номер_катера) REFERENCES Паспорт ON UPDATE CASCADE,
                CONSTRAINT fk8 FOREIGN KEY (Номер_должности) REFERENCES Должность ON  UPDATE CASCADE,
                );
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
09.12.2014, 16:43
Lar4ik, А почему у меня на почте вместо ON UPDATE CASCADE везде стоит ON DELETE CASCADE? Ответ, конечно, очевиден - редактирование сообщений не запрещено. Но от того, что вы изменили сообщение на форуме, ситуация в вашей БД не изменилась.
0
44 / 41 / 35
Регистрация: 27.02.2013
Сообщений: 284
09.12.2014, 16:54  [ТС]
я еще раз пересоздала таблицы. все заработало.

Добавлено через 9 минут
kodv, а если мне понадобится удалять записи, тоже работать не будет, так как указано UPDATE?
0
 Аватар для kodv
1449 / 1121 / 347
Регистрация: 11.04.2011
Сообщений: 2,621
09.12.2014, 17:00
Lar4ik, чтобы каскадом все обновлялось и удалялось нужно писать ON DELETE CASCADE ON UPDATE CASCADE
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.12.2014, 17:00
Помогаю со студенческими работами здесь

Инструкция Update
Добрый день. В событии After_Update формы пишу такую процедуру: Private Sub Form_AfterUpdate() Dim strPolz As String ...

sqlDataAdapter не создается инструкция UPDATE
Привет всем! Добрый вечер! Начал осваивать VS 2008 вкупе с SQL server 2008 и Visual Basic. Возникла проблема. Создаю форму....

WSUS Offline Update - инструкция использования
Недавно мне пришлось переустановить систему в связи с апгрейдом ПК. Чтобы не перекачивать тонну обновлений сразу после установки Windows, я...

DataGrid update ПРОБЛЕМА: Key column information is insufficient or incorect. Too many rows were affected by update
Привет всем ! В Вижуал Басик6 на форме имею ДатаГрид с информацией из Аксцессс 2000. Соединение - АДО. Пропертями усе установленно...

Не получается сделать Update (Update requires a valid InsertCommand)
Не получается сделать Update выдаёт ошибку, что делаю не так? В таблице только одно поле, оно строковое. public void...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru