SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.11.2009 21:18:21

Alex
Участник
Зарегистрирован: 17.11.2009
Сообщений: 4

Как применить UPDATE для всех полей таблицы? Помогите пож.

Подскажите пожалуйста, как с помощью UPDATE изменять значение поля таблицы независимо от столбца, в котором оно находится (допустим о количестве столбцов и их названиях мы вообще ничего не знаем)?

потипу:

UPDATE table_list
SET
data = AES_ENCRYPT(data,key);

где data - каждое из полей таблицы (если произвести изменения не позволяет тип, то поле пропускается)

Отредактированно Alex (17.11.2009 21:18:44)

Неактивен

 

#2 17.11.2009 22:13:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как применить UPDATE для всех полей таблицы? Помогите пож.

Ну, для каждой строки из списка (если это в БД, то можно, например, курсором)

set @qry = concat('UPDATE ',name,' SET data = AES_ENCRYPT(data,key)');
prepare pqry from @qry;
execute pqry; -- и на этом этапе отлавливать ошибку, или DECLARE CONTINUE HANDLER
deallocate prepare pqry;

Неактивен

 

#3 17.11.2009 23:26:35

Alex
Участник
Зарегистрирован: 17.11.2009
Сообщений: 4

Re: Как применить UPDATE для всех полей таблицы? Помогите пож.

спс чтото понял)) попробую разобраться

Неактивен

 

#4 18.11.2009 20:20:11

Alex
Участник
Зарегистрирован: 17.11.2009
Сообщений: 4

Re: Как применить UPDATE для всех полей таблицы? Помогите пож.

А вот такой код присвоит переменной @ctblname = название столбца под номером cindex?

SET @qry = CONCAT ("SELECT COLUMN_NAME FROM Information_Schema.columns LIMIT ", cindex, ",1 ");
PREPARE pqry FROM @qry;
DECLARE curs1 CURSOR FOR pqry;
OPEN curs1;
FETCH curs1 INTO @ctblname;

Неактивен

 

#5 18.11.2009 21:45:56

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Как применить UPDATE для всех полей таблицы? Помогите пож.

По-моему, Вы переусердствовали smile

SELECT @ctblname := COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'user' AND ORDINAL_POSITION = 3;

Неактивен

 

#6 19.11.2009 15:08:45

Alex
Участник
Зарегистрирован: 17.11.2009
Сообщений: 4

Re: Как применить UPDATE для всех полей таблицы? Помогите пож.

Спасибо) все вроде работает

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson