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

Инструкция UPDATE

08.12.2014, 18:19. Показов 4188. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru