请允许我回答很长的问题...
我必须将一条数据库记录添加到一张主表中,比方说 test
表。将记录添加到该表后,我想要它的 last inserted 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
表的条目放入另一个 action
中,如下所示
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
的success
中调用另一个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', type: 'post', async: true, data: { intId: data.id }, success:function(data) { //DO NOTHING }, }); //I DO NOT WANT USERS TO WAIT FOR THIS AJAX CALL location.reload(); }, });
但是随着页面重新加载,我的 AJAX
调用也没有完成 AJAX
请求就消失了。
那么在这种情况下可以这样做吗?如果您想了解更多详情,请告诉我。
我不希望用户等待另一个 1000
条目(加上向这 1000 条记录发送电子邮件)进入数据库。
最佳答案
然后创建一个数据库触发器。 所以当记录被插入到第一个表中时 它插入事务表或 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
关于php - Ajax调用面临尴尬局面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441617/