请问我长期问题……
我必须将一个数据库记录添加到一个主表中,比如测试表.在向此表添加记录后,我想要它的最后一个插入ID,然后想要在事务表中添加大约1000个条目(也将EMAILS发送到这1000条记录),让我们说test_transaction表.
但是这第二个操作,将记录添加到事务表中,需要更多的时间来向数据库添加记录.我正在使用客户MVC,我的代码看起来像……
public function addtotest() { $strsql = "INSERT INTO test ..."; $intId = $this->db->execute($strsql); foreach($arrTransaction $transact) { $strsql = "INSERT INTO test_transaction ..."; $this->db->execute($strsql); } echo $intId; }
所以我想把test_transaction表的条目放到另一个动作中,如下所示
public function testtrancation() { $id = $_REQUEST['id']; //It's understood that I am doing proper validation here foreach($arrTransaction $transact) { $strsql = "INSERT INTO test_transaction ..."; $this->db->execute($strsql); } }
所以主要的问题是,我正在调用来自AJAX的addtotest动作,当它响应id时,我想调用另一个AJAX,它将向数据库添加大约1000条记录.
但我不想让他们等待另外几分钟的1000条记录来打扰用户的体验.
>所以我正在通过addtotest`AJAX’调用添加记录后重新加载页面.
>在addtotest中成功调用另一个AJAX调用.
>在调用testtransaction AJAX调用之后,我正在重新加载我的页面.
$.ajax( { url: SERVER_PATH + 'addtotest',type: 'post',async: true,data: { required_data: required_date },success:function(data) { alert('Record added successfully.'); //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL $.ajax( { url: SERVER_PATH + 'testtransaction',data: { intId: data.id },success:function(data) { //DO NOTHING },}); //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL location.reload(); },});
但是当页面重新加载时,我的AJAX调用也会在没有完成AJAX请求的情况下消失.
那么在这种情况下可以做到吗?我想了解更多细节,请告诉我.
然后只需创建一个数据库触发器.
所以当Record在第一个表中插入时
它插入到事务表或SO中.
所以当Record在第一个表中插入时
它插入到事务表或SO中.
例子 –
CREATE TRIGGER trg_Table1_INSERT ON dbo.Table1 AFTER INSERT AS BEGIN INSERT INTO dbo.Table2(SerialNo,Name) SELECT SerialNo,Name FROM Inserted INSERT INTO dbo.Table3(SomeOtherCol) SELECT SomeOtherCol FROM Inserted END