|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
Всем привет! Столкнулся с не понятной проблемой. Есть таблица и уникальный индекс к ней: Код: sql 1. 2. 3.
Если несколько раз выполнить Код: sql 1.
То каждый раз, когда выполняется REPLACT меняется MatchID Подскажите, пжл, как этого избежать? Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.11.2013, 04:26 |
|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
Убери PK с MatchID, поставь ее на реальный ключ. И вообще, зачем тебе два уникальных ключа в таблице? Какой в этом смысл? На каждой таблице должен быть один и только один первичный ключ. Который уникален по определению. Вторичные уникальные ключи технически делать можно, но практически всегда бессмысленно и приводит к проблемам. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 06:25 |
|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
White Owl, я прочитал статью http://www.sqlabs.com/blog/2010/12/sqlite-and-unique-rowid-something-you-really-need-to-know/#comment-363 В ней сказано, что в sqlite родной rowid может быть изменен базой данных. Цитата из статьи/оффиц доков: "From the official documentation: “Rowids can change at any time and without notice. If you need to depend on your rowid, make it an INTEGER PRIMARY KEY, then it is guaranteed not to change”. And I add also AUTOINCREMENT so you are sure that the same rowid(s) are not reused when rows are deleted." Поэтому я так и сделал. Если подытожить, я поэкспериментировал и получилось, что решение есть: выбрать какие записи существуют, сделать для них UPDATE для остальных INSERT Тогда все вроде ок. Не могу понять как бы это сделать в рамках одного запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 11:21 |
|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
meneoПоэтому я так и сделал.Это все хорошо и правильно. Но тебя спрашивали совсем не об этом. Если у тебя пара League, Match уникальна - сделай ее первичным ключом и убери нафиг MatchID. meneoЕсли подытожить, я поэкспериментировал и получилось, что решение есть: выбрать какие записи существуют, сделать для них UPDATE для остальных INSERT Тогда все вроде ок. Не могу понять как бы это сделать в рамках одного запроса. Никак. А чем тебя два запроса не устраивают? Код: sql 1. 2.
классика из учебников. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.11.2013, 19:18 |
|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.11.2013, 18:13 |
|
INSERT or REPLACE меняет PRIMARY KEY ?
|
|||
---|---|---|---|
#18+
White Owl, буду признателен если поможешь составить запрос (я могу ток самый примитив делать). Запрос, походу, не тривиальный. Не уверен даже, что в один запихнешь :( Итак есть таблица: name1(text)name2(text)name3(text)winner(integer)Sum(double)МашаПетяВася1100ДимаМашаПетя2100ВасяДима Маша1100МаксимГенаВася350ПетяДимаВася1130 в столбце winner указывается номер победителя (name1,name2 или name3) нужно вывести кто сколько итого выиграл. Т.е. в примере результирующая таблица будет: WinnerNameSumМаша200Вася150Петя130 ... |
|||
:
Нравится:
Не нравится:
|
|||
19.11.2013, 02:15 |
|
|
start [/forum/topic.php?fid=54&msg=38469308&tid=2008850]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 414ms |
0 / 0 |