powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / дубликат записи
12 сообщений из 12, страница 1 из 1
дубликат записи
    #36426720
Agasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет, есть база склада, у каждово тавара есть свой код и этот код идиентичен, как можно сделать что когда записивают новый тавар при писание нового кода проверять новый код с имеюшимся и выводит сообшение что код уже еьт?
спосибо за ответи
...
Рейтинг: 0 / 0
дубликат записи
    #36426750
Фотография AmKad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agasi,

Самый простой вариант - сделать код товара первичным ключом.
...
Рейтинг: 0 / 0
дубликат записи
    #36426835
Индекс candidate?
...
Рейтинг: 0 / 0
дубликат записи
    #36427356
Agasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
candidat илиprimari?
...
Рейтинг: 0 / 0
дубликат записи
    #36427453
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agasi,

Единственная разница между ними - праймари может быть только один, а кандидатов много. Ставьте что хотите.
...
Рейтинг: 0 / 0
дубликат записи
    #36427480
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Agasiпривет, есть база склада, у каждово тавара есть свой код и этот код идиентичен, как можно сделать что когда записивают новый тавар при писание нового кода проверять новый код с имеюшимся и выводит сообшение что код уже еьт?
спосибо за ответи

Я решаю проблему двойников путем запроса в методе VALID того поля, где вводится новый код товара, например, так:

SELECT COUNT(GOODSCODE) AS CNT1;
FROM MYTABLE ;
WHERE GOODSCODE == NEWCODE ;
INTO CURSOR SYS(2015) NOFILTER

SCATTER MEMVAR

IF M.CNT1 > 0 && есть двойник
* здесь действия по поводу двойника, например, вывод сообщения
RETRY
ENDIF

* и тому подобное
...
Рейтинг: 0 / 0
дубликат записи
    #36429451
Agasi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спосибо это то что надо
...
Рейтинг: 0 / 0
дубликат записи
    #36429484
quxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igorbikAgasiпривет, есть база склада, у каждово тавара есть свой код и этот код идиентичен, как можно сделать что когда записивают новый тавар при писание нового кода проверять новый код с имеюшимся и выводит сообшение что код уже еьт?
спосибо за ответи

Я решаю проблему двойников путем запроса в методе VALID того поля, где вводится новый код товара, например, так:

SELECT COUNT(GOODSCODE) AS CNT1;
FROM MYTABLE ;
WHERE GOODSCODE == NEWCODE ;
INTO CURSOR SYS(2015) NOFILTER

SCATTER MEMVAR

IF M.CNT1 > 0 && есть двойник
* здесь действия по поводу двойника, например, вывод сообщения
RETRY
ENDIF

* и тому подобное

Теперь представим,что будет когда два и более пользователя работают одновременно и нажимают на valid вместе.
...
Рейтинг: 0 / 0
дубликат записи
    #36429552
GoshaS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО - надо и то, и другое.
1. Стандартно ловить в валид объекта.
2. Сформировать индекс кандидат, отдадим примари на суррогатный ключик. Индекс, как последний игрок команды-вратарь, отловит ошибку. Плюс - уникальность будет сохранятся и в том случае, если эту таблицу откроют в другой программе.
...
Рейтинг: 0 / 0
дубликат записи
    #36430071
igorbik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quxix
Теперь представим,что будет когда два и более пользователя работают одновременно и нажимают на valid вместе.
Что ж, будем вместе представлять и нажимать на Валид. Желаю удачи.
Я вообще-то так сделать не мог до сих пор, но обещаю потренироваться...

Автор темы про совместный доступ не написал. А при таком разе я прежде блокирую таблицу, где ищу двойников, и проверяю селектами еще некоторые уникальные вещи, затем вставляю 1 запись с уникальными полями, разблокирую таблицу и спокойно заполняю в ней все то, что может быть неуникальным. Варинтов много.
На двух проектах по 15 и 24 компов пока 5 лет все работает без сбоев.
...
Рейтинг: 0 / 0
дубликат записи
    #36431283
quxix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
igorbikquxix
Теперь представим,что будет когда два и более пользователя работают одновременно и нажимают на valid вместе.
Что ж, будем вместе представлять и нажимать на Валид. Желаю удачи.
Я вообще-то так сделать не мог до сих пор, но обещаю потренироваться...

А представлять и не надо наблюдаю картину дублей собственными глазами каждый день,
ведь на valid можно и программно жать и по несколько тысяч операций вставки данных в секунду с нескольких учётных мест.(Это о том когда ключ формируется криво)
igorbik
Автор темы про совместный доступ не написал. А при таком разе я прежде блокирую таблицу, где ищу двойников, и проверяю селектами еще некоторые уникальные вещи, затем вставляю 1 запись с уникальными полями, разблокирую таблицу и спокойно заполняю в ней все то, что может быть неуникальным.
при таком подходе замечаний нет :)

Мне представляется максимально простой реализация ключа в виде автоинкрементного ключа AUTOINC таблички(используемой только для генерации уникальных значений) -уникальность которого,при условии не обнуления счетчика, гарантированна. Что приближает реализацию уникальных идентификаторов к sequence -используемых для таких целей в больших СУБД
...
Рейтинг: 0 / 0
дубликат записи
    #36431560
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
quxixМне представляется максимально простой реализация ключа в виде автоинкрементного ключа AUTOINC таблички(используемой только для генерации уникальных значений) -уникальность которого,при условии не обнуления счетчика, гарантированна. Что приближает реализацию уникальных идентификаторов к sequence -используемых для таких целей в больших СУБД
В целом согласен, только вот автор темы не уточнил, зачем именно ему нужна проверка на дубликат. Ведь далеко не факт, что после нахождения дубликата последует запрет на создание записи. Вполне возможно, что по условию задачи, таблица МОЖЕТ иметь дубли. Надо просто поставить пользователя в известность о том, что такое уже есть.

Ну, а в частности, поскольку речь идет о некоем "внешнем" (в смысле, доступном для просмотра пользователем) коде, то, скорее всего, там какая-то цифро-буквенная аббревиатура. Т.е. простой автоинкремент не годится.

Да, "до кучи".

"Последняя линия обороны" - это триггер. Проверка индекса - это как раз первая проверка. Еще до сброса буфера сработает. Соотвественно, можно реализовать контроль уникальности на уровне триггера, если на уровне буфера дубли еще допустимы (одновременная правка многих записей). Но, разумеется, триггер - это сложнее...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / дубликат записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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