Hola de nuevo.
Para demostrar con un ejemplo lo que te menciono arriba, supongamos una hipotética tabla:
Código SQL
[-]
CREATE TABLE VENTAS (
ID INTEGER,
PRODUCTO VARCHAR(30),
CANTIDAD INTEGER,
PRECIO NUMERIC(18, 6),
FECHA DATE,
FECHAHORA TIMESTAMP
);
y que el excelente y nunca bién ponderado empleado "PEREZ", ha iniciado sesión con estos privilegios:
Código SQL
[-]
GRANT SELECT, INSERT, UPDATE(CANTIDAD) ON VENTAS TO PEREZ;
Si ejecuta esta consulta:
Código Delphi
[-]
...
begin
with IBQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE VENTAS SET CANTIDAD = :PCANT');
SQL.Add('WHERE ID = 1'); IBQuery1.ParamByName('PCANT').AsInteger := StrToInt(Edit1.text);
ExecSQL;
end;
end;
No va a tener ningun problema.
pero si intenta hacer:
Código Delphi
[-]
...
begin
with IBQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('UPDATE VENTAS SET PRECIO = :PPREC');
SQL.Add('WHERE ID = 1'); IBQuery1.ParamByName('PPREC').AsCurrency:= StrToFloat(Edit1.text);
ExecSQL;
end;
end;
va a obtener un bonito mensaje: "
No permission for update/write access to column VENTAS.PRECIO"
Saludos
