我有两个表Branch_TB
和Branch_City
。添加列一个表上插入值到另一个表
Branch_TB:
CREATE TABLE Branch_TB(
Branch_Id int NULL,
Branch_Name varchar(50) NULL
)
每当有对Branch_Name
的条目,我想补充一点,条目name
列Branch_City
。
有没有这方面的任何方法。我不知道该怎么做,也没有尝试任何解决方案。
在此先感谢。
我有两个表Branch_TB
和Branch_City
。添加列一个表上插入值到另一个表
Branch_TB:
CREATE TABLE Branch_TB(
Branch_Id int NULL,
Branch_Name varchar(50) NULL
)
每当有对Branch_Name
的条目,我想补充一点,条目name
列Branch_City
。
有没有这方面的任何方法。我不知道该怎么做,也没有尝试任何解决方案。
在此先感谢。
可以实现,使用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')
但在我看来,你应该重新评估你的数据库设计。
谢谢@SouravAgasti它解决了我的问题.. –
您需要在Branch_TB
表中创建trigger
行insert
行。 在触发器中,您需要添加用于在需求表中添加column
的代码。 How to create Trigger in Sql ?检查此。
你可以试试这个
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
我的理解像你想在其他一些表复制在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')
无无@GiorgiNakeuri我希望复制在另一个表插入值作为列名 –
你能告诉我们的代码插入到BranchTB表? –
Actaully @GiorgiNakeuri我已经使这个演示为我的问题找到解决方案..真正的代码是很大的,所以为了理解,我做了这个 –
可以将它作为原始插入的相同存储过程/脚本的一部分,也可以使用触发器。 – Bridge
只需一边,你确定这是一个很好的设计?或换句话说,你期望在Branch_name中有多少值? – Mihai
@Bridge你可以请示范如何做到这一点。请 –