miércoles, 24 de septiembre de 2008

Cómo incrementar el valor de una secuencia

El siguiente PL/SQL es útil para incrementar el valor de una secuencia al valor que deseemos:
DECLARE
i NUMBER(10);

BEGIN

  SELECT SQCUENTA.NEXTVAL INTO i FROM dual;

  WHILE i < 1000000 LOOP 
    SELECT SQCUENTA.NEXTVAL INTO i FROM dual; 
  END LOOP;
END;
Esto me ha funcionado en una BD Oracle 10g.

En PostgreSQL existe la función setval que permite hacer lo mismo.
SELECT setval('SQCUENTA', 1000000);

miércoles, 18 de abril de 2007

Esquema de autenticación de MySQL

Desde la versión 4.1.1 de MySQL el esquema de autenticación cambió para hacerlo más seguro. Desafortunadamente, este nuevo esquema no es compatible con las versiones anteriores (clientes anteriores a la versión 4.1.1) y cuando intentamos loguearnos nos dará el siguiente error:

Client does not support authentication protocol requested by server; consider upgrading MySQL client.

Si no es posible actualizar la versión del cliente con la que nos estamos conectando, podemos hacer una de las dos cosas siguientes, tener en cuenta que esto reducirá la seguridad de nuestro servidor de bases de datos:
mysql> SET PASSWORD FOR 'username'@'hostname' = OLD_PASSWORD('password');
ó
mysql> use mysql;
mysql> UPDATE user SET password = OLD_PASSWORD('password') WHERE user = 'username' AND host = 'hostname';
Se debe tener en cuenta que los cambios no harán efecto hasta que se haga
mysql> flush privileges;