Cum de a crea un insert parametrizate folosind interogare de selectare, care include unele valori dinamice pentru postgresql?

voturi
0

Sunt folosind pachetul nodejs pag. Am creat câteva interogări parametrizate simple folosind următorul format:

var client = new Client({user: 'brianc', database: 'test'});
client.on('drain', client.end.bind(client)); //disconnect client when all queries are finished
client.connect();

var query = client.query({
  text: 'SELECT name FROM users WHERE email = $1',
  values: ['brianc@example.com']
}, function(err, result) {
  console.log(result.rows[0].name) // output: brianc
});

Dar acum am câteva întrebări mai complexe pentru a scrie în cazul în care am crea o copie a unei înregistrări cu un nume și o descriere ca următoarele noi:

var sNewName = 'new name', sNewDescription = 'new description';

INSERT IGNORE  INTO testtable (
    name,
    description,
    col3name,
    col4name,
    col5name,
) (
  SELECT 
    sNewName,
    sNewDescription,
    col3name,
    col4name,
    col5name
  FROM testtable
  WHERE
      id = 24
) RETURNING *;

Pe wiki pg se spune următoarele cu privire la parametrizate întrebare:

O interogare parametrizate vă permite să „treci argumente“ pentru o interogare, oferind o bariera de la atacuri SQL injection.

Parametrii nu pot fi DDL:

  • selectați numele de la emp în cazul în care emp_id = $ 1 - legală
  • selectați $ 1 din emp în cazul în care emp_id = $ 2 - ilegale - coloana nu poate fi parametru
  • selectați numele de la $ 1 în cazul în care emp_id = $ 2 - ilegale - tabel nu poate fi parametru
  • selectați numele de la $ 1.emp în cazul în care emp_id = $ 2 - ilegale - schemă nu poate fi parametru

Cum atunci, este posibil de a face interogarea de mai sus pentru copierea unei înregistrări, ca o interogare parametrizate?

Sunt folosind 9.5.3 și PostgreSQL pg 6.1.2.

Vă mulțumim pentru timpul acordat.

Întrebat 15/01/2017 la 02:22
sursa de către utilizator
În alte limbi...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more