如果这个问题太标准,我很抱歉,但我无法找到有效的方法
我有 3 个表 Customer
、CustomerProject
和 StandardProject
StandardProject
表包含Customer
表中每个客户必须拥有的所有项目的列表。
我的逻辑是,当一个新客户插入Customer
表时,它将触发并将StandardProject
中的所有项目插入CustomerProject
Create Table [Customer]
(
[CID] INTEGER PRIMARY KEY IDENTITY(1,1)
, Customer VARCHAR(50) NOT NULL UNIQUE
)
Create Table [CustomerProject]
(
ProjectID INTEGER PRIMARY KEY IDENTITY(1,1)
, [CID] INTEGER FOREIGN KEY REFERENCES [Customer](CID)
, Project VARCHAR(50) NOT NULL
, CONSTRAINT UN_Customer_Project UNIQUE([CID], Project)
)
Create Table [StandardProject]
(
ProjectID INTEGER PRIMARY KEY IDENTITY(1,1)
, Project VARCHAR(50) NOT NULL UNIQUE
)
INSERT INTO [StandardProject](Project) VALUES('PROJECT 1')
INSERT INTO [StandardProject](Project) VALUES('PROJECT 2')
INSERT INTO [StandardProject](Project) VALUES('PROJECT 3')
问题:当我插入Customer = 'My Customer'
时,是否有可能的触发器可以添加'Project 1'
、'Project 2'
、'Project 3'
放入 CustomerProject
表中?
实际上,StandardProject
可以有相当多的项目,并且这些项目可以更改频率。
CREATE TRIGGER InsertStandardProjects ON [Customer]
FOR INSERT
AS
INSERT INTO [CustomerProject]([CID], [Project])...
最佳答案
类似这样的事情。
CREATE TRIGGER InsertStandardProjects ON [Customer]
FOR INSERT
AS
INSERT INTO [CustomerProject]([CID], [Project])
SELECT i.CID, St.Project
FROM inserted i,StandardProject St
--检查
INSERT INTO Customer (Customer) VALUES ('MyNewCustomer')
SELECT * FROM [Customer]
SELECT * FROM [CustomerProject]
Output:
CID Customer
1 MyNewCustomer
ProjectID CID Project
1 1 PROJECT 1
2 1 PROJECT 2
3 1 PROJECT 3
关于sql-server - MS SQL 2012 插入触发器 : Insert all rows from a table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380691/