Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/40: Рейтинг темы: голосов - 40, средняя оценка - 4.85
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42

Редактирование таблиц в БД MS SQL Server из Visual Studio

01.04.2015, 12:18. Показов 7893. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уважаемые форумчане.

Прошу помощи в решении следующей проблемы:
в MS SQL Server есть БД, где имеются связанные в цепочку таблицы
адрес(id_адрес, дом, корп, кв, id_улица) - улица(id_улица, наименование, id_пункт) -
пункт(id_пункт, наименование)

Делаю через myCommand.CommandText запрос UPDATE на редактирование данных во всех
перечисленных таблицах. Измененные данные считываются из textbox и combobox формы.
Само изменение данных не вызывает особых проблем, но ведь при введении новых данных,
они (новые данные) могут совпасть с уже имеющимися в базе
, потому первичный ключ,
по которому связаны таблицы, должен быть изменен, а строка, которая редактировалась,
должна быть удалена, чтобы не было совпадений по остальным колонкам и, соответственно,
двойников, которые различаются только id-полями.
Вот как-то так. Сам уже запутался...

Подскажите, пожалуйста, алгоритм действий, который нужно применять в этом случае.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.04.2015, 12:18
Ответы с готовыми решениями:

Среда SQL Server Management Studio [17:42:06] masha Kurilenko: visual studio
Помогите исправить ошибку пожалуйста.....очень срочно

Visual Studio и Server Management Studio не видит SQL сервер
Здравствуйте, собственно вся проблема в заголовке. При попытке создать бд в студии через обозреватель серверов либо через management...

SQL Server 12 и Visual Studio 12
Скажите, пожалуйста, для установки SQL Server 12 не подходит Visual Studio 12? Нужна обязательно 10 студия? Если в Visual Studio 12...

18
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 12:25
сделать суррогатный ключ автоинкрементным (identity) и забыть
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 12:42  [ТС]
Все первичные ключи автоинкрементные [1,1]. Или я чего-то не понял в Вашем совете?

Если у меня в какой-то из таблиц редактируемая строка совпадет с уже имеющейся,
то ее (редактируемую строку) нужно удалить, переписав при этом внешний ключ в другой
связанной таблице, чтобы не получилось ссылки на удаленный первичный ключ...
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 12:54
ничего не понял. Кто на ком стоял? (с)
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 13:15  [ТС]
извините, за путанное изложение темы.

У меня есть таблицы, которые связаны между собой в "цепочку"

адрес(ПК - id_адрес, дом, корп, кв, ВК - id_улица) -
улица( ПК - id_улица, наименование, ВК - id_пункт) -
пункт( ПК - id_пункт, наименование).

Допустим при редактировании поля [наименование] из таблицы [улица]
я ввожу наименование, которое уже присутствует в данной таблице:

например: была "ленина", ввожу "советская". Но, улица "советская" уже
есть в поле [наименование] таблицы [улица].

Значит, нужно удалить ту строку, которую я редактирую в данный момент
и в таблице [адрес] исправить ВК [id-улица], присвоив ему значение ПК [id_улица]
из таблицы [улица], значение поля [наименование] которой "советская".
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 13:26
зарадидля?
если редактируешь адрес и хочешь сменить улицу - поменяй просто FK
на наименование должно быть наложено ограничение уникальности
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 13:39  [ТС]
спасибо, нашел информацию по UNIQUE.

т.е. если я изменю значение улицы на то, что уже имеется в таблице [улица],
то ВК в таблице [адрес] также изменит свое значение?

нужно ли для этого ставить каскадное изменение?

и куда денется строка с наименованием "ленина" ?
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 13:42
думаю, стоит прочитать внимательно про целостность данных
1
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 14:33  [ТС]
Пошел читать.

Добавлено через 46 минут
Цитата Сообщение от pincet Посмотреть сообщение
на наименование должно быть наложено ограничение уникальности
но ведь у меня могут быть в столбце [наименование] две или больше улиц "советская",
если они относятся к разным населенным пунктам.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 14:50
а, ну да, просмотрел. Значит, не нужно. Все равно, мне проблемы неясны - все до безобразия просто. Внес новую улицу - пользуйся, вноси данные в адрес
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 14:56  [ТС]
Ну, извини, если раздражаю тебя своими мелкими проблемами, которые гроша ломанного не стоят.
Буду надеяться, что кто-нибудь из гуру, удостоит мой вопрос своим вниманием.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 15:03
Цитата Сообщение от pincet Посмотреть сообщение
мне проблемы неясны
как же тебя понять-то, коль ты ничего не говоришь?
По факту у тебя 3 справочника
Нас. пункт
Улицы
Адрес
Тебе нужно добавить новый адрес - добавляешь запись со ссылкой на улицу (нужную)
Нет улицы - добавляешь запись в справочник Улиц со ссылкой на НП (нужный)
Нет НП - создаешь.
В где печаль?
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 15:15  [ТС]
Цитата Сообщение от Grimbl Посмотреть сообщение
запрос UPDATE на редактирование данных во всех
перечисленных таблицах
Речь идет не о добавлении, а о редактировании записей в таблицах.

Вот была у меня строка в таблице [улица]: 1122 | ленина | 1022
где 1-ый столбец - ID_улицы, 2-ой - наименование, 3-ий - ID_населенного пункта.

Я вношу исправление из формы - изменяю наименование "ленина" на "советская" и получаю
две повторяющихся строки в таблице [улица]:
1122 | советская | 1022 (эту строку я редактировал)
911 | советская | 1022 (эта строка уже была занесена ранее).

Насколько я понимаю, так быть не должно, потому что это дублирование данных.

После редакции должна остаться одна строка - 911 | советская | 1022
и первое поле ID_улицы (911) должно быть внесено в редактируемую строку таблицы [адрес]
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 15:19
стесняюсь спросить - а зачем это делать?
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 15:24  [ТС]
зачем редактировать данные?

потому что они идентифицируют клиента.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 15:28
Цитата Сообщение от Grimbl Посмотреть сообщение
зачем редактировать данные?
потому что они идентифицируют клиента.
вот тут совсем не понял
вот этот https://ru.wikipedia.org/wiki/... 0%B5%D1%80
товарищ негодуэ
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 19:03  [ТС]
Ну, вики так вики: https://ru.wiktionary.org/wiki... 0%E1%EE%EB

Я почитал, чего ты говорил, задал тебе вопрос, ты начал лепить чего-то непонятное.
Если умный такой, подскажи, как сделать правильно.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
01.04.2015, 19:42
Цитата Сообщение от Grimbl Посмотреть сообщение
ты начал лепить чего-то непонятное
Пилите, Шура, они золотые. У меня траблов нет, а тебя есть. Хреново ты читал то, что я тебе рекомендовал. А про балабола - да ладно, у тебя диплом по определению балаболов в эхах? Так тебе в модераторы, как минимум.
0
 Аватар для Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
02.04.2015, 13:59  [ТС]
Тему можно удалять, проблему решил. Всем спасибо за участие.

Добавлено через 18 часов 14 минут
Цитата Сообщение от pincet Посмотреть сообщение
Пилите, Шура, они золотые. У меня траблов нет, а тебя есть. Хреново ты читал то, что я тебе рекомендовал. А про балабола - да ладно, у тебя диплом по определению балаболов в эхах? Так тебе в модераторы, как минимум.
Ну ты шаблон тогда из этой фразы сделай и вывешивай везде. Глядишь, будешь админом сам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.04.2015, 13:59
Помогаю со студенческими работами здесь

Visual studio и SQL server
У меня задание: организовать заказ блюд из БД для пользователя. (БД - SQL server 2008 R2) пользователь должен выбрать несколько блюд, и на...

В Visual Studio с SQL создать связь таблиц
делаю проект не очень большой и не маленький журнал для учебного заведения и начал создавать... проблема возникла с таблицами ...и не знаю...

C++ Builder + SQL Server (Visual Studio)
Создал базу данных. В C++ Builder в свой проект добавляю ADOConnection, потом начинаю искать сервер, но его не видит. ...

Visual Studio & SQL Server
Создал интерфэйс(windows forms C#) на основе базы данных созданной в SQL Server... Как сделать чтобы приложение запускалось на другом ПК,...

Подключение Visual Studio к SQL Server
Как подключить Visual Studio к SQL Server через запрос SqlConnection? Пересмотрел очень много сайтов, но понятно расписанного метода, я...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru