|
дубликат записи
|
|||
---|---|---|---|
#18+
привет, есть база склада, у каждово тавара есть свой код и этот код идиентичен, как можно сделать что когда записивают новый тавар при писание нового кода проверять новый код с имеюшимся и выводит сообшение что код уже еьт? спосибо за ответи ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2010, 16:33 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
Agasi, Самый простой вариант - сделать код товара первичным ключом. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2010, 17:21 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
candidat илиprimari? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2010, 12:55 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
Agasi, Единственная разница между ними - праймари может быть только один, а кандидатов много. Ставьте что хотите. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2010, 15:07 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
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 * и тому подобное ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2010, 15:31 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
спосибо это то что надо ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2010, 15:59 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
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 вместе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2010, 16:10 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
ИМХО - надо и то, и другое. 1. Стандартно ловить в валид объекта. 2. Сформировать индекс кандидат, отдадим примари на суррогатный ключик. Индекс, как последний игрок команды-вратарь, отловит ошибку. Плюс - уникальность будет сохранятся и в том случае, если эту таблицу откроют в другой программе. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2010, 16:32 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
quxix Теперь представим,что будет когда два и более пользователя работают одновременно и нажимают на valid вместе. Что ж, будем вместе представлять и нажимать на Валид. Желаю удачи. Я вообще-то так сделать не мог до сих пор, но обещаю потренироваться... Автор темы про совместный доступ не написал. А при таком разе я прежде блокирую таблицу, где ищу двойников, и проверяю селектами еще некоторые уникальные вещи, затем вставляю 1 запись с уникальными полями, разблокирую таблицу и спокойно заполняю в ней все то, что может быть неуникальным. Варинтов много. На двух проектах по 15 и 24 компов пока 5 лет все работает без сбоев. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2010, 19:58 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
igorbikquxix Теперь представим,что будет когда два и более пользователя работают одновременно и нажимают на valid вместе. Что ж, будем вместе представлять и нажимать на Валид. Желаю удачи. Я вообще-то так сделать не мог до сих пор, но обещаю потренироваться... А представлять и не надо наблюдаю картину дублей собственными глазами каждый день, ведь на valid можно и программно жать и по несколько тысяч операций вставки данных в секунду с нескольких учётных мест.(Это о том когда ключ формируется криво) igorbik Автор темы про совместный доступ не написал. А при таком разе я прежде блокирую таблицу, где ищу двойников, и проверяю селектами еще некоторые уникальные вещи, затем вставляю 1 запись с уникальными полями, разблокирую таблицу и спокойно заполняю в ней все то, что может быть неуникальным. при таком подходе замечаний нет :) Мне представляется максимально простой реализация ключа в виде автоинкрементного ключа AUTOINC таблички(используемой только для генерации уникальных значений) -уникальность которого,при условии не обнуления счетчика, гарантированна. Что приближает реализацию уникальных идентификаторов к sequence -используемых для таких целей в больших СУБД ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 13:34 |
|
дубликат записи
|
|||
---|---|---|---|
#18+
quxixМне представляется максимально простой реализация ключа в виде автоинкрементного ключа AUTOINC таблички(используемой только для генерации уникальных значений) -уникальность которого,при условии не обнуления счетчика, гарантированна. Что приближает реализацию уникальных идентификаторов к sequence -используемых для таких целей в больших СУБД В целом согласен, только вот автор темы не уточнил, зачем именно ему нужна проверка на дубликат. Ведь далеко не факт, что после нахождения дубликата последует запрет на создание записи. Вполне возможно, что по условию задачи, таблица МОЖЕТ иметь дубли. Надо просто поставить пользователя в известность о том, что такое уже есть. Ну, а в частности, поскольку речь идет о некоем "внешнем" (в смысле, доступном для просмотра пользователем) коде, то, скорее всего, там какая-то цифро-буквенная аббревиатура. Т.е. простой автоинкремент не годится. Да, "до кучи". "Последняя линия обороны" - это триггер. Проверка индекса - это как раз первая проверка. Еще до сброса буфера сработает. Соотвественно, можно реализовать контроль уникальности на уровне триггера, если на уровне буфера дубли еще допустимы (одновременная правка многих записей). Но, разумеется, триггер - это сложнее... ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2010, 14:57 |
|
|
start [/forum/topic.php?fid=41&fpage=107&tid=1585653]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 11ms |
total: | 130ms |
0 / 0 |