Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
запрос в БД
#1
Как построить запрос- "если колонки в таблице (characters) face, hairStyle hairColor, sex не являются 1, 2 или 3, то сменить все на 0?

Либо как сделать возможным выбор только между 1-2-3 при добавлении в базу?
[SPOILER=
PHP код:
<?php 
"characters"]CREATE TABLE IF NOT EXISTS `characters` (
`
account_name` VARCHAR(45) NOT NULL DEFAULT '',
`
obj_Id` INT NOT NULL DEFAULT '0',
`
char_name` VARCHAR(35) CHARACTER SET UTF8 NOT NULL DEFAULT '',
`
face` TINYINT UNSIGNED DEFAULT NULL,
`
hairStyle` TINYINT UNSIGNED DEFAULT NULL,
`
hairColor` TINYINT UNSIGNED DEFAULT NULL,
`
sex` BOOLEAN DEFAULT NULL,
`
heading` mediumint DEFAULT NULL,
`
x` mediumint DEFAULT NULL,
`
y` mediumint DEFAULT NULL,
`
z` mediumint DEFAULT NULL,
`
karma` INT DEFAULT NULL,
`
pvpkills` INT DEFAULT NULL,
`
pkkills` INT DEFAULT NULL,
`
clanid` INT DEFAULT NULL,
`
createtime` INT UNSIGNED NOT NULL DEFAULT '0',
`
deletetime` INT UNSIGNED NOT NULL DEFAULT '0',
`
title` VARCHAR(16) CHARACTER SET UTF8 DEFAULT NULL,
`
rec_have` TINYINT UNSIGNED NOT NULL DEFAULT '0',
`
rec_left` TINYINT UNSIGNED NOT NULL DEFAULT '20',
`
rec_bonus_time` INT NOT NULL DEFAULT '3600',
`
hunt_points` INT NOT NULL DEFAULT '0',
`
hunt_time` INT NOT NULL DEFAULT '14400',
`
accesslevel` TINYINT DEFAULT NULL,
`
online` BOOLEAN DEFAULT NULL,
`
onlinetime` INT UNSIGNED NOT NULL DEFAULT '0',
`
lastAccess` INT UNSIGNED NOT NULL DEFAULT '0',
`
leaveclan` INT UNSIGNED NOT NULL DEFAULT '0',
`
deleteclan` INT UNSIGNED NOT NULL DEFAULT '0',
`
nochannel` INT NOT NULL DEFAULT '0', -- not UNSIGNED, negative value means 'forever'
`pledge_type` SMALLINT NOT NULL DEFAULT '-128',
`
pledge_rank` TINYINT UNSIGNED NOT NULL DEFAULT '0',
`
lvl_joined_academy` TINYINT UNSIGNED NOT NULL DEFAULT '0',
`
apprentice` INT UNSIGNED NOT NULL DEFAULT '0',
`
key_bindings` varbinary(8192) DEFAULT NULL,
`
pcBangPoints` INT NOT NULL DEFAULT '0',
`
vitality` SMALLINT UNSIGNED NOT NULL DEFAULT '20000',
`
fame` INT NOT NULL DEFAULT '0',
`
bookmarks` TINYINT UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (obj_Id),
UNIQUE KEY `char_name` (`char_name`),
KEY `account_name` (`account_name`),
KEY `clanid` (`clanid`)
)
ENGINE=MyISAM;
[/SPOILER]
Ответ
#2
Если без заморочек, примерно так:

UPDATE characters SET face='0' where face not in (1,2,3);
UPDATE characters SET hairStyle='0' where hairStyle not in (1,2,3);
UPDATE characters SET hairColor='0' where hairColor not in (1,2,3);
UPDATE characters SET sex='0' where sex not in (1,2,3);
Вот бы сделать дома уборку и нажать "СОХРАНИТЬ"!)
Ответ
#3
Это исправление проблемы, но надо что бы невозможно добавить было выше 3, т.е указанных...

создавал таблицу с заменой
PHP код:
<?php 
`hairStyle` TINYINT UNSIGNED DEFAULT NULL,
на
PHP код:
<?php 
`hairStyle` SET (`1`,`2`,`3`) DEFAULT NULL,
ругается на синтаксис при заливе в базу -
syn

upd** неверный синтаксис из-за знака
PHP код:
<?php 
`
, а
PHP код:
<?php 
'
приняло.

Создает персов, но создает только мужиков и только с параметрами face, hairStyle, hairColor, sex =0, точнее оно вообще туда ничего не записывает... метаморфозы какие-то)

Если выбирать тип колонки ENUM, то вообще персонажа не создает...

Уже ругается сервер- [03:23:20]
server

Инфу брал отсуда- http://www.site-do.ru/db/sql2.php
Ответ
#4
Rolfer Написал:Если выбирать тип колонки ENUM, то вообще персонажа не создает...

Уже ругается сервер-

Вы что хотите сделать какие то ограничения при создании нового персонажа, но со стороны БД?
Так делать нельзя, нужно добавить дополнительные проверки в код сервера например в обработчик пакета CharacterCreate.
При ограничении со стороны БД вы и будете каждый раз получать эти самые SQLException при попытке записать "невпихуемые" данные в таблицу.
Ответ
#5
flopix Написал:Вы что хотите сделать какие то ограничения при создании нового персонажа, но со стороны БД?
Так делать нельзя, нужно добавить дополнительные проверки в код сервера например в обработчик пакета CharacterCreate.
При ограничении со стороны БД вы и будете каждый раз получать эти самые SQLException при попытке записать "невпихуемые" данные в таблицу.
Для этого есть хранимые процедуры.
Ответ
#6
подробней можно?
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  sql Запрос Attack 2 1,287 02-05-2013, 05:13 PM
Последний пост: Attack
  Как сделать запрос в базу? xnekt0x 2 1,541 11-22-2012, 08:03 PM
Последний пост: xnekt0x
  sql запрос кулич 8 2,483 08-29-2011, 12:56 AM
Последний пост: кулич
  запрос к базе из ядра 3xeng 3 1,702 08-28-2011, 10:42 AM
Последний пост: Azagthtot
  MySQL запрос cjhrxS 3 2,267 07-27-2011, 04:19 PM
Последний пост: cjhrxS
  НЕмогу намутить sql запрос Feyser 9 2,675 04-04-2010, 01:45 PM
Последний пост: Feyser
  Как адаптировать SQL запрос под свою таблицу systemERROR 4 2,999 02-04-2010, 10:50 PM
Последний пост: VoltVolt
  запрос в БД kilatiV 1 2,397 07-19-2009, 04:55 PM
Последний пост: PROGRAMMATOR
  Id Wyvern и Sql запрос на дроп HuKoJIaC 4 9,724 12-19-2008, 01:22 PM
Последний пост: HuKoJIaC
  SQL запрос или что нибудь подобное SVKoT 0 1,900 12-03-2008, 08:09 PM
Последний пост: SVKoT

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)