powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему R/O?
15 сообщений из 15, страница 1 из 1
Почему R/O?
    #32043140
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь с помощью CDatabase/CRecordset записать в таблицу MS SQL, а он мне говорит мол множество записей read only. Проверил тот же код на Access'е - все нормально. На базе R/О не стоит.
Почему сие может происходить? Что где подкрутить надо?
...
Рейтинг: 0 / 0
Почему R/O?
    #32043143
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первичный ключ есть?
...
Рейтинг: 0 / 0
Почему R/O?
    #32043157
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
нету
...
Рейтинг: 0 / 0
Почему R/O?
    #32043175
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А собственно при чем здесь первичный ключ???????
...
Рейтинг: 0 / 0
Почему R/O?
    #32043177
~Bazul~
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
блокировкис-с-с...
...
Рейтинг: 0 / 0
Почему R/O?
    #32043179
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не может без первичного ключа определить какую запись апдейтить
...
Рейтинг: 0 / 0
Почему R/O?
    #32043204
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> блокировкис-с-с...
Какие блокировки, я на ней (на базе) один сижу

> не может без первичного ключа определить какую запись апдейтить

Враки, все он может. Ключи не при чем. И кстати на R/O ругается и при AddNew(). А специально для Вас - сделал первичный ключ - результат тот же.
...
Рейтинг: 0 / 0
Почему R/O?
    #32043212
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извиняюсь, все же действительно с ключем набор становится доступным для записи (все же непонятно, почему так...), но при апдейте ругается ("Ошибка при попытке обновления или удаления."), хотя и апдейтит (это то меня и сбило...)
...
Рейтинг: 0 / 0
Почему R/O?
    #32043265
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как тогда быть, если primary key не нужен?
...
Рейтинг: 0 / 0
Почему R/O?
    #32043324
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если у вас в таблице две абсолютно одинаковые записи, то исправить только одну из них стандартными средствами не получиться
...
Рейтинг: 0 / 0
Почему R/O?
    #32043340
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AlexQC
Как это primary key не нужен? А для удаления или обновления записи?
...
Рейтинг: 0 / 0
Почему R/O?
    #32043783
AlexQC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как бы это точнее выразиться...
1. Мне нужно скорее добавление чем изменение/удаление.
2. Записи такие, что 2х одинаковых быть не дОлжно.
3. В любом случае, если MS SQL не накладывает условие обязательности первичного ключа, значит должен с такими таблицами работать.
4. Конечно, можно какое-нибудь identity добавить, но зачем мне лишнее поле, если прямой необходимости в нем нету?
...
Рейтинг: 0 / 0
Почему R/O?
    #32043812
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Мне нужно скорее добавление чем изменение/удаление.

Рано или поздно придется что-то удалять - ведь не будет же ваша база расти до бесконечности. Кроме того, зачем держать в таблице данные, к которым никто не обращается по причине окончания какого-либо срока актульности

2. Записи такие, что 2х одинаковых быть не дОлжно.

А вот этого как раз вы без первичного ключа (как ограничения для таблицы) не получите


3. В любом случае, если MS SQL не накладывает условие обязательности первичного ключа, значит должен с такими таблицами работать.

MS SQL - не накладывает. В этом можно убедится, если попробуете изменить таблицу например через Enterprise Manager.

А вот клиентское приложение запросто может. Потому как работает с таблицей через запрос (UPDATE/DELETE/INSERT) и поэтому не может при том же обновлении однозначно отличить одну запись от другой.

4. Конечно, можно какое-нибудь identity добавить, но зачем мне лишнее поле, если прямой необходимости в нем нету?

Наличие полей типа первичного ключа определяется не желанием/нежеланием, а собственно самой теорией реляционных баз данных.(см. нормальные формы)
...
Рейтинг: 0 / 0
Почему R/O?
    #32043828
Фотография AVL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2AlexQC
учите матчасть :)
...
Рейтинг: 0 / 0
Почему R/O?
    #32043844
KonstN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Встречный вопрос - если первичного ключа нет, то как клиент должен определять какую запись апдейтить? По полному соответствию всех полей? А если кто-нибудь изменил за это время какое-нибудь, это та же запись осталась или уже другая? Тут мы попадаем в область теории РБД. Не стОит туда лезть.
Если у Вас двух одинаковых записей быть не дОлжно, то первичным ключом является полный набор всех полей (это будет естественный ключ) или можно добавить identity (это будет суррогатный).
Делать же первичный ключ надо хотя бы и потому, что он автоматом делает кластерный индекс. Если Вы руками не делаете кластерный индекс, то физически записи лежат не очень хорошо - почитайте как оно. Да и индексы работают лучше с привязкой к кластерному индексу, а не к хеш-значению, которое используется в отсутствии оного.
Так что делайте первичный ключ и избежите многих геморроев.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Почему R/O?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]