Changes between Version 30 and Version 31 of Трансакции


Ignore:
Timestamp:
06/15/25 18:01:39 (14 hours ago)
Author:
183175
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Трансакции

    v30 v31  
    104104}}}
    105105Кога овој момент нема да успее, ке премине во блок '''catch'''.\\
     106= Consistency
     107Сега ке видиме пример каде ја штитиме базата од внесување невалидни или несоодветни податоци \\
     108поради поставените '''constraints''' односно ограничувања.\\
     109'''Пример 1 : Error'''\\
     110'''FOREIGN KEY врски''' (на пример, '''{{{id_customer}}}''' во '''{{{orders}}}''' мора да постои во '''{{{customers}}}'''),\\
     111а од друга страна имаме поставено и неколку '''NOT NULL''' полиња. \\
     112Во '''/order''' API, пред да се внесе нарачка, се проверува дали има доволно залиха :
     113{{{#!sql
     114if (currentStock < item.quantity) {
     115  throw new Error(`Недоволна залиха за продукт ${item.product_name} (${item.size})`);
     116}
     117}}}
     118На овој начин се спречува несоодветно внесување на залиха во база, што би ја нарушило логиката и правилата во базата.\\
     119Ако нешто не е во ред, трансакцијата не се потврдува и базата останува во валидна состојба.\\
     120'''Пример 2 : status(400) '''\\
     121Во API за промена на улога '''PUT /admin/users/:id/role''' проверуваm дали улогата постои во '''roles''' пред да се измени :\\
     122{{{#!sql
     123const roleRes = await db.pool.query("SELECT id_role FROM roles WHERE role_name = $1", [role_name]);
     124if (roleRes.rows.length === 0) {
     125  return res.status(400).json({ error: "Улогата не постои" });
     126}
     127}}}
     128ова е уште еден пример каде се штити базата од внесување невалидни или несоодветни податоци.