将列添加到一个表中,将值插入另一个表

时间:2015-05-01 09:37:05

标签: sql sql-server sql-server-2008

我有两张表Branch_TBBranch_City

Branch_TB:

CREATE TABLE Branch_TB(
Branch_Id int NULL,
Branch_Name varchar(50) NULL
) 

只要有Branch_Name的条目,我就想在name中将该条目添加为Branch_City列。

有没有办法解决这个问题。我不知道该怎么做,也没有尝试任何解决方案。

提前致谢。

4 个答案:

答案 0 :(得分:0)

您需要在trigger表格的insert行上创建Branch_TB。 在触发器中,您需要在require表中添加Add column的代码。 How to create Trigger in Sql ?检查一下。

答案 1 :(得分:0)

你可以试试这个

create proc proc_branch (@b_name varchar(50)
as 
begin
exec('alter table Branch_city add column '+ @b_name + ';');
end
go
create trigger tr_branch
on branch_TB
for insert
as
begin
declare @branch_name varchar(50);
set @branch_name=(select branch_name from inserted)
exec proc proc_branch
end

答案 2 :(得分:0)

我理解为您希望在列name的其他某些表中复制插入的值。如果是这样,那么您可以尝试使用OUTPUT

INSERT  INTO Branch_TB( Branch_Id, Branch_Name )
OUTPUT  'someValue1', Inserted.Branch_Name, 'someValue2'
        INTO Branch_City ( someCol1, Name, comeCol2 )
VALUES  ( 1, 'some name' )

答案 3 :(得分:0)

您可以使用AFTER INSERT TRIGGER实现此目的。

CREATE TABLE Branch_TB(
Branch_Id int NULL,
Branch_Name varchar(50) NULL
)

go
--drop table BranchCity
create table BranchCity(abc varchar(20))

go

create TRIGGER dbo.AddCol
ON Branch_TB
AFTER INSERT AS
BEGIN
    DECLARE @NewVal VARCHAR(20)
    DECLARE @AlterSQL VARCHAR(100)

    CREATE TABLE #New
    (
    VAL VARCHAR(20)
    )

INSERT INTO #New
select Branch_Name from inserted

select @NewVal = Val from #New

SET @AlterSQL = 'ALTER TABLE BranchCity add ' + @NewVal + ' VARCHAR(20)'
exec(@AlterSQL)


END

go

insert into Branch_Tb
values(1, 'City1')

go

insert into Branch_Tb
values(2, 'City2')

但在我看来,你应该重新评估你的数据库设计。