2015-05-01 136 views
0

我有两个表Branch_TBBranch_City添加列一个表上插入值到另一个表

Branch_TB:

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

每当有对Branch_Name的条目,我想补充一点,条目nameBranch_City

有没有这方面的任何方法。我不知道该怎么做,也没有尝试任何解决方案。

在此先感谢。

+1

可以将它作为原始插入的相同存储过程/脚本的一部分,也可以使用触发器。 – Bridge

+2

只需一边,你确定这是一个很好的设计?或换句话说,你期望在Branch_name中有多少值? – Mihai

+0

@Bridge你可以请示范如何做到这一点。请 –

回答

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') 

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

+0

谢谢@SouravAgasti它解决了我的问题.. –

0

您需要在Branch_TB表中创建triggerinsert行。 在触发器中,您需要添加用于在需求表中添加column的代码。 How to create Trigger in Sql ?检查此。

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 
+0

你能解释一下这个@Deepak,我不明白这个 –

+0

@ChetanBodke哪部分? – Deepak

+0

menas将如何得到ADDE的记录,它是如何被添加为 –

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') 
+0

无无@GiorgiNakeuri我希望复制在另一个表插入值作为列名 –

+0

你能告诉我们的代码插入到BranchTB表? –

+0

Actaully @GiorgiNakeuri我已经使这个演示为我的问题找到解决方案..真正的代码是很大的,所以为了理解,我做了这个 –

相关问题