Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2013, 14:24
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

SQLite - Вставить или обновить
Есть следующая таблица
Код:
id    site      time   count
1     mail.ru   1234   888
2     d3.ru     4567   987
База SQLite.

Как вставить знаю:
Код:
INSERT INTO TableName (site, time) VALUES ('pupkin.ru', 100)
Как обновить знаю:
Код:
UPDATE TableName count = '200', WHERE site = 'pupkin.ru'
А вот как одним запросом добавить или если сайт с таким именем уже есть, то обновить одно/несколько значений?
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2013, 14:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Magneto
А вот как одним запросом
Что есть "один запрос" для SQLite?

Т.к. на лицо селект, анализ ситуации и после этого либо вставка... Либо изменение...
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2013, 14:56
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Типа:
Код:
UPDATE OR INSERT INTO TableName (site, count) VALUES ('mail.ru', 888) MATCHING (site)
, но такая конструкция в SQLite не работает.
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2013, 15:07
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

Сообщение от Magneto
UPDATE OR INSERT
Таких команд нет ни в одном SQL...
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2013, 15:09
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от ksa Посмотреть сообщение
Таких команд нет ни в одном SQL...
Слабак ))
http://firebirdsql.su/doku.php?id=update_or_insert
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2013, 15:16
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,215

У нас можно сделать разве что так...

SET mysite="pupkin.ru"
&sql(
	DECLARE myCursor CURSOR FOR 
		SELECT site
		INTO :site
		FROM myTable
		WHERE site=:mysite
	FOR READ ONLY
)
&sql(OPEN myCursor)
&sql(FETCH myCursor)
IF SQLCODE {
	&sql(UPDATE SET myTable count = '200', WHERE site = :mysite)
} ELSE {
	&sql(INSERT INTO myTable (site, time) VALUES (:mysite, 100))
}
&sql(CLOSE myCursor)



Последний раз редактировалось ksa, 05.02.2013 в 10:20.
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2013, 15:53
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Спасибо ksa за помощь.
Порывшись внимательно в загашниках своих решений нашел то что нужно:
Код:
INSERT OR REPLACE INTO TableName(site, count) VALUES ('mail.ru', 999)
, или вставка/обновление для нескольких сайтов:
Код:
INSERT OR REPLACE INTO TableName(site, count) VALUES ('mail.ru', 999), ('pupkin.ru', 666)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
NodeJS, как работать с SQLite? Riim AJAX и COMET 22 11.10.2011 17:56
как js вставить в теги? catsys Элементы интерфейса 0 30.08.2009 03:28
Как определить цвет (темный он или светлый)? mouse_web Элементы интерфейса 6 22.07.2009 14:35
Как узнать свернуто окно браузера или нет. bar-boss Events/DOM/Window 3 25.09.2008 16:09
Мягкие переносы скриптом вставить невозможно? (символ ­) barbiturat Общие вопросы Javascript 6 05.09.2008 22:53