0
CREATE PROCEDURE _InsertAttbts 
    @Attribute VARCHAR(100) 

AS 

    IF NOT EXISTS (SELECT * FROM dbo.Attributes WHERE Attribute = @Attribute) 

    INSERT INTO dbo.Attributes(Attribute) 
       VALUES(@Attribute) 

    IF NOT EXISTS (SELECT * FROM DBO.Products WHERE Pname [email protected]) 

     ALTER TABLE PRODUCTS 
     ADD @Attribute varchar(100) 

这里Products是我的主表,Attributes是它的子表。我的任务是,如果用户试图插入一个新行,它会检查该行是否存在,如果不是,它希望在产品表中添加新行,同时它应该在属性表中的属性字段中插入相同的值...如何在现有表中创建(添加)新行并在另一个表中插入一行?

我在SQL Server 2012中使用SP.

Plz Help!

谢谢....

+0

你能否提供一些样本数据来解释你想要做什么? –

+0

我不明白;为什么要在产品表中添加一列? – Nilesh

+0

我试图在产品表中添加一个新字段,因为用户给出了该属性的名称,并且相同的属性也应该在属性表中保存(通过插入)... – user72

回答

2

你需要用动态SQL做这件事,我想。

CREATE PROCEDURE _InsertAttbts @Attribute VARCHAR(100) 
AS 
BEGIN 
    IF NOT EXISTS (SELECT * FROM dbo.Attributes WHERE Attribute = @Attribute) 
    BEGIN 
     INSERT INTO dbo.Attributes(Attribute) 
      VALUES(@Attribute); 

     declare @sql nvarchar(max) = 'ALTER TABLE PRODUCTS ADD '[email protected]+' varchar(100)'; 
     exec sp_executesql @sql; 
    END; 
END; 

我不知道你为什么要这么做。您可以使用INFORMATION_SCHEMA.COLUMNS或其中一个系统表获取列的列表。

相关问题