Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
1

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

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

Уважаемые форумчане.

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

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

Подскажите, пожалуйста, алгоритм действий, который нужно применять в этом случае.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2015, 12:18
Ответы с готовыми решениями:

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

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

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

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

Visual Studio не видит SQL server
Добрый день уважаемые форумчане. Собственно проблема в следующем: Скачал и установил с сайта...

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

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

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

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

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

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

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

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

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

и куда денется строка с наименованием "ленина" ?
0
pincet
1382 / 966 / 130
Регистрация: 23.07.2010
Сообщений: 5,229
01.04.2015, 13:42 8
думаю, стоит прочитать внимательно про целостность данных
1
Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 14:33  [ТС] 9
Пошел читать.

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

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

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

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

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

потому что они идентифицируют клиента.
0
pincet
1382 / 966 / 130
Регистрация: 23.07.2010
Сообщений: 5,229
01.04.2015, 15:28 16
Цитата Сообщение от Grimbl Посмотреть сообщение
зачем редактировать данные?
потому что они идентифицируют клиента.
вот тут совсем не понял
вот этот https://ru.wikipedia.org/wiki/%D0%94...84%D0%B5%D1%80
товарищ негодуэ
0
Grimbl
0 / 0 / 0
Регистрация: 25.09.2012
Сообщений: 42
01.04.2015, 19:03  [ТС] 17
Ну, вики так вики: https://ru.wiktionary.org/wiki/%E1%E0%EB%E0%E1%EE%EB

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

Добавлено через 18 часов 14 минут
Цитата Сообщение от pincet Посмотреть сообщение
Пилите, Шура, они золотые. У меня траблов нет, а тебя есть. Хреново ты читал то, что я тебе рекомендовал. А про балабола - да ладно, у тебя диплом по определению балаболов в эхах? Так тебе в модераторы, как минимум.
Ну ты шаблон тогда из этой фразы сделай и вывешивай везде. Глядишь, будешь админом сам.
0
02.04.2015, 13:59
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.04.2015, 13:59

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

Visual Studio + SQL Server: создание переносного приложения
есть приложение на visual studio 2012, которое через binding source и dataset использует базу...

Вызов триггера, созданного в SQL Server, в Visual Studio
Здравствуйте! Подскажите, пожалуйста, как использовать триггер, созданный в SQL Server, в Visual...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru