我有两张表Branch_TB
和Branch_City
。
Branch_TB:
CREATE TABLE Branch_TB(
Branch_Id int NULL,
Branch_Name varchar(50) NULL
)
只要有Branch_Name
的条目,我就想在name
中将该条目添加为Branch_City
列。
有没有办法解决这个问题。我不知道该怎么做,也没有尝试任何解决方案。
提前致谢。
答案 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')
但在我看来,你应该重新评估你的数据库设计。