日期:2014-05-17  浏览次数:20537 次

SQL触发器动态加列求教

CREATE TABLE P_PEInfo(
PE_OCNO nvarchar(50) primary key
)

CREATE TABLE P_PEMenu(
    ID nvarchar(30) primary key,
    Name nvarchar(50),
)

CREATE TRIGGER TRIGGER_PE_INFOMENU
ON PE_PEMenu
AFTER INSERT
AS 
DECLARE @ID NVARCHAR(30)
BEGIN 
set @ID = inserted.ID
ALTER table P_PEInfo ADD  @ID NVARCHAR(30)
END 



ALTER table P_PEInfo ADD  @ID NVARCHAR(30)
这句话有问题,请教可行性与能否修改。
SQL 触发器

------解决方案--------------------
set @ID = ltrim(inserted.ID)
exec('ALTER table P_PEInfo ADD  '+@ID+' NVARCHAR(30)')
------解决方案--------------------
需求改改吧,这样设计太夸张了
------解决方案--------------------
CREATE TRIGGER TRIGGER_PE_INFOMENU
ON P_PEMenu
AFTER INSERT
AS 
DECLARE @ID NVARCHAR(30)
BEGIN 
select @ID =ID FROM inserted
EXEC('ALTER table P_PEInfo ADD  '+@ID +' NVARCHAR(30)')
END 

INSERT INTO P_PEMenu(id,name)
SELECT N'test',N'123'


SELECT * FROM P_PEInfo