在PHP中,我试图将多行插入到两个单独的表中。因为这些都需要成功,我开始有:在COMMIT之前在MS SQL中获取插入的主键
$insert_Proposal = 'INSERT INTO PROPOSALS(';
$insert_Proposal .= 'ApprovedByDev, ';
$insert_Proposal .= 'EstFundingEndFiscalYear, ';
$insert_Proposal .= 'EstFundingStartDate, ';
$insert_Proposal .= 'ProjectDesc, ';
$insert_Proposal .= 'ProjectType, ';
$insert_Proposal .= 'ProposalComments ';
$insert_Proposal .= ') VALUES (';
$insert_Proposal .= sqlSafeVars($_POST['ApprovedByDev'], "varchar") .', ';
$insert_Proposal .= sqlSafeVars($_POST['EstFundingEndFiscalYear'], "bigint") .', ';
$insert_Proposal .= sqlSafeVars($_POST['EstFundingStartDate'], "varchar") .', ';
$insert_Proposal .= sqlSafeVars($_POST['ProjectDesc'], "varchar") .', ';
$insert_Proposal .= sqlSafeVars($_POST['ProjectType'], "bigint") .', ';
$insert_Proposal .= sqlSafeVars($_POST['ProposalComments'], "varchar") .' ';
$insert_Proposal .= ')';
我需要的是让投标套件autonumbered,这将是:
mssql_query("BEGIN TRAN");
然后,我通过插入到主表运行这个创造,所以我可以用它来记录插入到另一个表,我之前发出COMMIT
我发现建议使用这样的:
output inserted.pk
或
INSERT INTO Persons (FirstName) VALUES ('Joe');
SELECT ID AS LastID FROM Persons WHERE ID = @@Identity;
但这些似乎并没有,如果你不提交初始交易工作。预先感谢您的帮助。
我认为问题在于使用自动编号;你必须在表格中使用一个身份。请参阅http://stackoverflow.com/questions/661998/oracle-sequence-but-then-in-ms-sql-server – Luis
我只是这个网页上的程序员,没有DBA特权,所以我可以提出建议,但我必须忍受他们提供的结构。这就是说,当我说自动编号时,我的意思是它被定义为身份增量为1的身份 – AlexC