我有一个名为tbl_faults
的SQL Server数据库表。在该表中,fault_id
是主(int)并且自动递增。在同一个表中,我有另一个名为fault_reference
(int)的字段,并且不是自动递增的。
当我在表中输入数据时,fault_reference
的值应该与fault_id
的值相同。
有人能给我提个办法吗。
$sql='SELECT Top 1 FROM "tbl_faults" ORDER BY "fault_id"';
我试图使用它来获取fault_id
的最后一个更新值,并在插入新行时使用它,但这似乎不起作用。
SELECT fault_id FROM tbl_faults ORDER BY fault_id DESC LIMIT 1
应提供插入的最后一个id。
我想你可以通过得到这个
$sql='SELECT Top 1 FROM "tbl_faults" ORDER BY "fault_id" DESC ';
要更新您的记录,我认为您可以使用两种方法。
插入完成后写入触发器以更新行
允许设置fault_reference int NULL。然后编写一个更新查询,将行fault_reference值更新为fault_id,其中fault_refererence为NULL。
这只是一个想法。请检查。
我认为,最好在单个存储过程中执行,使用SCOPE_IDENTITY函数,该函数返回插入同一范围内标识列的最后一个标识值。作用域是一个模块:存储过程、触发器、函数或批。因此,如果两个语句在同一存储过程、函数或批处理中,则它们在同一范围内
因为当你在几个批次中进行时,fault_id
有可能在另一个批次中递增。