如何在现有表中创建(添加)新行并在另一个表中插入行?

时间:2013-07-30 02:43:46

标签: sql-server stored-procedures insert alter-table insert-into

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 =@Attribute)

        ALTER TABLE PRODUCTS
        ADD @Attribute varchar(100)

此处Products是我的主表,Attributes是其子表。我的任务是,如果用户尝试插入新行,则检查该行是否存在,如果不是,则要在product表中添加新行,同时应在属性表的属性字段中插入相同的值...

我在SQL Server 2012中使用SP。

Plz帮助!

...谢谢

1 个答案:

答案 0 :(得分: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 '+@Attribute+' varchar(100)';
        exec sp_executesql @sql;
    END;
END;

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