如何在存储过程中获取外键 [英] how to get foreign key in stored procedure

查看:83
本文介绍了如何在存储过程中获取外键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2桌艺术和艺术家。我编写了艺术存储过程,其中artistId是外键。在表格中插入数据的程序如下:



I have 2 tables arts and artist. I have written stored procedure for arts in which artistId is a foreign key. procedure for inserting data in table arts is as follows:

create procedure spInsertArts(
@artsId int out,
@name varchar(50),
@category varchar(50),
@artistId int
)
as
     begin
	select @artistId=SCOPE_IDENTITY()
		if exists(select artistId from artist)
         insert into arts(name,category,artistId) values(@name,@category,@artistId)
      end







当我执行它时,它给出了错误:过程或函数'spInsertArts'需要参数'@artistId',这是未提供的。我想将artistId设置为artistId中艺术家的最新值Table.pls帮助。




when i execute it,it is giving error as:Procedure or function 'spInsertArts' expects parameter '@artistId', which was not supplied.i want to set artistId to latest value of artistId in artist Table.pls help.

推荐答案

如果artsID是一个标识列(保证唯一性和单调性),你可以要求
If artsID is an identity column (guaranteeing uniqueness and monotonicity), you could ask for
SELECT @artsID = max(artID) from arts



(假设这是列名)你使用它可能是明智的在子查询中,取决于你如何安排事情。



现在,在插入之后,在你关闭连接之前,你可以使用


(assuming that's the column name) It may be sensible for you to use this in a subquery, depending upon how you arrange things.

Now, after an insert, and before you close the connection, you can use

SELECT TOP 1 @@IDENTITY From arts





,它将从您的存储过程中返回。 />


不要忘记在您的程序或退货记录中包含



and it would be returned from your stored procedure.

Do not forget to include

SET NOCOUNT ON

设置将是一团糟




这样改变



change like this

create procedure spInsertArts(
@artsId int out=null,
@name varchar(50)=null,
@category varchar(50)=null,
@artistId int<pre>=null
)
as
     begin
	select @artistId=SCOPE_IDENTITY()
		if exists(select artistId from artist)
         insert into arts(name,category,artistId) values(@name,@category,@artistId)
      end


这篇关于如何在存储过程中获取外键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆