我有一个名为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
的最后更新值,并在插入新行时使用它,但这似乎不起作用。
答案 0 :(得分:2)
SELECT fault_id FROM tbl_faults ORDER BY fault_id DESC LIMIT 1
应该提供插入的最后一个ID。
答案 1 :(得分:0)
我认为你可以通过
得到这个$sql='SELECT Top 1 FROM "tbl_faults" ORDER BY "fault_id" DESC ';
要更新您的记录,我认为您可以使用两种方法。
在插入完成后编写触发器以更新行
设置fault_reference int NULL允许。然后编写更新查询以将行fault_reference值更新为fault_id,其中fault_reference为NULL。
这只是一个想法。请检查。
答案 2 :(得分:0)
我认为,最好使用SCOPE_IDENTITY函数在单个存储过程中执行此操作,该函数返回插入同一范围内的标识列的最后一个标识值。范围是一个模块:存储过程,触发器,函数或批处理。因此,如果两个语句在同一存储过程,函数或批处理中,则它们在同一范围内
因为当您在几批中进行此操作时,可能会在另一批中增加fault_id
。