Просмотр полной версии : Удаление карт из базы
jon73.ul
02.10.2014, 12:12
Добрый день! Уважаемые есть у кого то пример sql скрипта с помощью которого можно удалить не нужные зарегистрированные в базе карты? Или может это можно сделать через managment studio ? Подскажите как удалить карты из базы. Спасибо!
А зачем?
Удалить карты, если по ним были кассовые операции и игры - это геморройная задачка.
Слишком много связанных таблиц нужно будет обработать и не накосячить.
jon73.ul
02.10.2014, 20:48
А зачем?
Удалить карты, если по ним были кассовые операции и игры - это геморройная задачка.
Слишком много связанных таблиц нужно будет обработать и не накосячить.
Нет, удалить те которые еще не заюзаны
Тем более не понимаю - Зачем???
В зависимости от версии GK с которой вы работаете это будут разные таблицы. Какая версия?
Если у вас сохранились скрипты, при помощи которых карты добавлялись в БД, то в них вы можете увидеть в какую таблицу шло добавление, и соответственно просто удалить добавленные записи из этих таблиц.
Если версия старая (до 3,16 по моему), то это были 2 таблицы в 2-х базах. Если от 3.16 до 3.2Х, то там одна таблица. В самых старших версиях (там где карты добавляются в БД через Редактор) - не смотрел.
Евгений68
22.01.2015, 16:28
С версии 3.23 если я не ошибаюсь, карты удаляются вот этим запросом:
Сначала
Delete gk.GK_CARDS_EXT
where card = ....
Потом
Delete gk.GK_CARDS
where card = ....
Если хотите удалить какой то диапазон карт, то запрос такой:
Сначала
Delete gk.GK_CARDS_EXT
where card >= 1089000
and card <= 1090000
Потом
Delete gk.GK_CARDS
where card >= 1089000
and card <= 1090000
Я бы сделал так для версии 3.23
ковыряю базу достаточно давно, знаю что и для чего.
DECLARE @CARD int
DECLARE upd CURSOR READ_ONLY FOR
SELECT [CARD] FROM [gkArcade].[gk].[GK_CARDS]
WHERE [STATE] in(2,3) --Замененные(3) и удаленные(2) карты
-- WHERE [STATE] = 1 -- Активные карты
-- WHERE [STATE] = 0 -- Неактивные карты(для продажи)
-- WHERE [CARD] >= 3670 AND [CARD] <= 3744 -- Карты по номерам
OPEN upd
FETCH NEXT FROM upd INTO @CARD
WHILE (@@FETCH_STATUS <> -1) BEGIN
--PRINT "Удаляем "+@CARD
DELETE [gkArcade].[gk].[GK_CARDS] WHERE [CARD]=@CARD -- таблица карт
DELETE [gkArcade].[gk].[GK_CARDS_EX] WHERE [CARD]=@CARD -- персональная информация
DELETE [gkArcade].[gk].[GK_CARDS_EXT] WHERE [CARD]=@CARD -- хэши кодов карт
DELETE [gkArcade].[gk].[GK_CARDS_PHOTO] WHERE [CARD]=@CARD -- фото владельцев
DELETE [gkArcade].[gk].[GK_CARDS_CO] WHERE [CARD]=@CARD -- для охранного поста
FETCH NEXT FROM upd INTO @CARD
END
CLOSE upd
А вообще карты лучше не удалять - потому что коды стоят денег - лучше обеспечить ротацию замененных и утеряных карт.
Покупаешь 5000 кодов - а в базе есть еще 10000 кодов не проданных(неактивированны ) карт - просто самих карт нет. Так что имея 50000 карт можно вполне обходиться без генерации кодов.
Powered by vBulletin® Version 4.2.6 LTS Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot