Trading Bots vs Arbitrage Bots
Instrucciones
PostgreSQL posee la capacidad de definir distintos secuenciadores que sirven para dar valores por defecto a campos numéricos con lo que numerar los registros que vamos introduciendo. Con los lenguajes procedurales es posible llevar más allá estas posibilidades, y como muestra un botón: un secuenciador fibonacci hecho en python:
-- Creación de la tabla de prueba CREATE TABLE prueba (id integer, nombre text); -- Generador de números de fibonacci CREATE FUNCTION fibgen() RETURNS integer AS ' #buscar los dos valores mayores r=plpy.execute("select id from prueba order by id desc limit 2" ) if len(r)==2: a,b=r[1]["id"],r[0]["id"] elif len(r)==1: a,b=r[0]["id"],0 else: a,b=1,0 return a+b' LANGUAGE 'plpythonu'; -- Asignar el secuenciador ALTER TABLE prueba ALTER COLUMN id SET DEFAULT fibgen();
Podemos probar su funcionamiento introduciendo algunos valores
INSERT INTO prueba(nombre) VALUES ('Primero'); INSERT INTO prueba(nombre) VALUES ('Segundo'); INSERT INTO prueba(nombre) VALUES ('Tercero'); INSERT INTO prueba(nombre) VALUES ('Cuarto'); SELECT * FROM prueba; -- id | nombre -- ----+--------- -- 1 | Primero -- 1 | Segundo -- 2 | Tercero -- 3 | Cuarto -- (4 filas)
Si forzamos el valor del campo, vemos que el secuenciador se "ajusta" a los nuevos parámetros
INSERT INTO prueba(id,nombre) VALUES(100,'Cien'); INSERT INTO prueba(nombre) VALUES('CienUno'); INSERT INTO prueba(nombre) VALUES('CienDos'); SELECT * FROM prueba; -- id | nombre -- ----+--------- -- 1 | Primero -- 1 | Segundo -- 2 | Tercero -- 3 | Cuarto -- 100 | Cien -- 103 | CienUno -- 203 | CienDos -- (7 filas)