我有两个表infirmier
表
CREATE TABLE INFIRMIER
(
NUM_INF INT
FOREIGN KEY REFERENCES EMPLOYE(NUM_EMP) ,
CODE_SERVICE VARCHAR(50)
FOREIGN KEY REFERENCES SERVICE(CODE_SERVICE),
ROTATION VARCHAR(50),
SALAIRE MONEY,
PRIMARY KEY (NUM_INF),
);
和service
。
CREATE TABLE SERVICE
(
CODE_SERVICE VARCHAR(50)
PRIMARY KEY (CODE_SERVICE),
NOM_SERVICE VARCHAR(50),
BATIMENT INT,
DIRECTEUR INT
FOREIGN KEY REFERENCES MEDECIN(NUM_MED),
);
我想创建一个触发器,该触发器将在每次插入保险人后显示分配给nom_service
的新保险人。
我还创建了一个表infirmier_tt
,以按日期和操作在其中存储新的插入内容。
CREATE TABLE INFIRMIER_tt
(
change_id INT IDENTITY PRIMARY KEY,
NUM_INF INT,
CODE_SERVICE VARCHAR(50),
ROTATION VARCHAR(100),
SALAIRE MONEY,
NOM_SERVICE VARCHAR(50),
updated_at DATETIME,
operation CHAR(3),
CHECK(operation = 'INS' OR operation = 'DEL')
);
这是我正在使用的代码
CREATE TRIGGER aff_inff
ON INFIRMIER
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO INFIRMIER_tt(NUM_INF,
--NOM_SERVICE,
CODE_SERVICE, ROTATION, SALAIRE, updated_at, operation)
SELECT
i.NUM_INF ,
-- NOM_SERVICE from INFIRMIER I join SERVICE S on (I.CODE_SERVICE=S.CODE_SERVICE);
CODE_SERVICE,
ROTATION,
i.SALAIRE,
GETDATE(),
'INS'
FROM
inserted i
END
我遇到的问题是,当我插入新的infirmier
时,由于表nom_service
中没有该服务,因此无法插入服务名infirmier
。并尝试使用join
,但我不知道怎么做。
这是我插入时得到的结果:
答案 0 :(得分:2)
我不明白您真正想在这里做什么,或者为什么要这样,但是这就是我想您要做的
CREATE TABLE SERVICE(
CODE_SERVICE varchar(50)primary key (CODE_SERVICE),
NOM_SERVICE varchar(50),
BATIMENT int,
DIRECTEUR int,
);
CREATE TABLE INFIRMIER
(
NUM_INF int IDENTITY(1, 1) PRIMARY KEY NOT NULL,
CODE_SERVICE varchar(50),
ROTATION varchar(50),
SALAIRE money,
CONSTRAINT FK_INF_CODE_SERVICE FOREIGN KEY (CODE_SERVICE) REFERENCES SERVICE(CODE_SERVICE)
);
CREATE TRIGGER TRIG1
ON INFIRMIER
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON;
-- Change it to an INSERT
SELECT *
FROM INSERTED I INNER JOIN Service S
ON I.CODE_SERVICE = S.CODE_SERVICE;
END
INSERT INTO Service VALUES
('Service1', 'ServiceName1', 1, 1);
INSERT INTO Infirmier(CODE_SERVICE, ROTATION, SALAIRE) VALUES
('Service1', 'Rotation', 100.00);
返回:
+---------+--------------+----------+----------+--------------+--------------+----------+-----------+
| NUM_INF | CODE_SERVICE | ROTATION | SALAIRE | CODE_SERVICE | NOM_SERVICE | BATIMENT | DIRECTEUR |
+---------+--------------+----------+----------+--------------+--------------+----------+-----------+
| 1 | Service1 | Rotation | 100.0000 | Service1 | ServiceName1 | 1 | 1 |
+---------+--------------+----------+----------+--------------+--------------+----------+-----------+
您会看到NOM_SERVICE
列出现。您现在所需要的就是将SELECT
语句更改为INSERT
。
我会把它留给你,因为它是一个高频头。
Here is a live demo ,您可以在其中在线玩它。