![]() |
|||
![]() |
![]() |
![]() |
|
![]() |
|
Таблица users_info_extНазначение таблицы:Таблица предназначена для хранения информации о всех зарегистрированных
пользователях. В ней содержится такая информация как имя, пол, возраст,
адрес, интересы, пароль. Также она содержит различную служебную информацию.
Основной тип запросов - запросы на выборку конкретной записи по номеру
пользователя (номер уникален).
Создание таблицы: Таблица создается сервером или утилитой при помощи запроса SQL. Прототип
запроса находится в модуле database\init_db.h Запрос такого размера
правильно отрабатывает только в версии Postgres 7.x.x и выше. CREATE TABLE Users_Info_Ext (uin float8, pass name, ulock int2, llog float8, iadr float8, bcst int2, cdate float8, cpass int2, nick name, frst name, last name, email1 text, email2 text, email3 text, e1publ int2, gmtoffs int2, auth int2, sex int2, age int2, bday int2, bmon int2, byear int2, waddr text, wcity name, wstate name, wcountry int4, wcompany name, wtitle name, wocup int2, wdepart name, wphon name, wfax name, wpager name, wzip text, wweb text, notes text, haddr text, hcity name, hstate name, hcountry int4, hphon name, hfax name, hcell name, hzip name, hweb text, nnotes float8, lang1 int2 DEFAULT 0, lang2 int2 DEFAULT 0, lang3 int2 DEFAULT 0, hpage_cf int2 DEFAULT 0, hpage_cat int4 DEFAULT 0, hpage_txt text DEFAULT '', wdepart2 text DEFAULT '', past_num int2 DEFAULT 0, past_ind1 int4 DEFAULT 0, past_key1 text DEFAULT '', past_ind2 int4 DEFAULT 0, past_key2 text DEFAULT '', past_ind3 int4 DEFAULT 0, past_key3 text DEFAULT '', int_num int2 DEFAULT 0, int_ind1 int4 DEFAULT 0, int_key1 text DEFAULT '', int_ind2 int4 DEFAULT 0, int_key2 text DEFAULT '', int_ind3 int4 DEFAULT 0, int_key3 text DEFAULT '', int_ind4 int4 DEFAULT 0, int_key4 text DEFAULT '', aff_num int2 DEFAULT 0, aff_ind1 int4 DEFAULT 0, aff_key1 text DEFAULT '', aff_ind2 int4 DEFAULT 0, aff_key2 text DEFAULT '', aff_ind3 int DEFAULT 0, aff_key3 text DEFAULT '', iphide int2 DEFAULT 00, webaware int2 DEFAULT 1); Таблица содержит индексы на поля uin, last, frst, nick, iadr, llog для
ускорения работы запросов поиска конкретных пользователей и поиска по
запросу протокола. Индексы создаются следующим образом: CREATE UNIQUE INDEX euser_uin ON Users_Info_Ext (uin) CREATE INDEX euser_last ON Users_Info_Ext (last) CREATE INDEX euser_frst ON Users_Info_Ext (frst) CREATE INDEX euser_nick ON Users_Info_Ext (nick) CREATE INDEX euser_iadr ON Users_Info_Ext (iadr) CREATE INDEX euser_llog ON Users_Info_Ext (llog) Примечание: Пароли в базе данных хранятся в открытом виде, поэтому необходима тщательная
защита данной таблицы от несанкционированного доступа. Для совместимости
имеется также специальный вид users_info, содержащий только часть полей
данной таблицы (отсутствуют специфичные поля для клиентов V5) Приведу несколько примеров SQL запросов, для работы с этой таблицей. IServerd
использует конструкции SQL для выборки данных из этой таблицы, изменения, добавления
и удаления. Запрос на выборку ника,имени,фамилии,почтового адреса и пароля для пользователя 6218895:
SELECT nick, frst,last,email2,pass FROM Users_Info_Ext WHERE uin=6218895; Запрос на изменение пароля пользователя 6218895:
UPDATE Users_Info_Ext SET pass='password' WHERE uin=6218895; Запрос на добавление пользователя очень большой (слишком много полей в таблице),
поэтому приведу лишь его начало и конец:
INSERT INTO Users_Info_Ext VALUES (6218895, 'password', 0, ..., 0, 1); Также иногда требуется перенести пользователя из таблицы register_requests в основную
таблицу users_info_ext в случае ручной регистрации. При ручной регистрации записи о
новых пользователях добавляются в таблицу register_requests, которая имеет такое же
строение как и таблица users_info_ext. Предположим, что вновь добавленному пользователю
присвоен автоматически номер 6218896, тогда перенос его записи в основную таблицу
(методом вставки и удаления) c изменением номера на 100001 будет выглядеть так:
UPDATE register_requests SET uin=100001 WHERE uin=6218896; INSERT INTO Users_Info_Ext (SELECT * FROM register_requests WHERE uin=100001); DELETE FROM register_requests WHERE uin=100001; |
|
|
|
||||||||||||||||||||||||||||||||||||||
|
|
Webmaster А.В.Шутко |
![]() |
![]() |