我正在使用SQL Server 2014
我有一个表A
,其中包含以下列:
planNo, parcelNo, id
另一个包含这些列的表B
:
planNo, parcelNo, userEmail
当一个新行插入表A
时,我想向userEmail
发送一封电子邮件,以查找表B
中具有相同parcelNo
和{的所有行{1}}
答案 0 :(得分:2)
评论太长了。
你知道答案,因为你已经标记了问题"触发"。当你还没有尝试写代码时,你是否要求其他人为你编写代码?你应该尝试自己。
在我看来,通过触发器发送电子邮件是危险的。我更喜欢使用存储过程的基于API的方法。触发器中的错误可能导致数据库锁定。
不是直接在表中插入行并使用数据库触发器执行电子邮件,而是调用存储过程在A
中插入行,然后在存储过程中发送电子邮件。因此,存储过程看起来像这样:
create procedure usp_InsertAndEmail (
@planNo ??,
@parcelNo ??,
@id
) as
begin
declare @email varchar(255);
insert into a(planNo, parcelNo, id)
values (@planNo, @parcelNo, @id);
declare cursor b_cursor for
select email
from table b
where b.planNo = @planNo and b.parcelNo = @parcelNo;
open cursor b_cursor;
fetch next from b_cursor into @email;
while (@@fetch_status = 0)
begin
-- do email send however you do it
fetch next from b_cursor into @email;
end;
close b_cursor;
deallocate b_cursor;
end;
此方法还允许您检查电子邮件中的错误。
答案 1 :(得分:0)
我猜你使用PHP?
$requete= 'SELECT * FROM B WHERE planNo=\'.$plannumber.\' AND parcelNo=\'.$parcelnumber.\'';
$result = $bdd->query($requete);
if($result)
{
while ($donnees = $result->fetch())
{
$email=$donnees['userEmail'];
$header='From: Name Surname <your_email>'."\r\n";
$title='title of your mail';
$message='your message';
mail($email, $title, $message, $header);
}
}