SQL Server - BEFORE-INSERT-Trigger
Ich habe zwei Tabellen wie folgt:
Tabelle 1 "MySkills' [ primary key (EmpId, SkillId)]
+----------+------------+---------+----------+-----------+------------+-----------------+----------------+
| EmpId | CategoryId | SkillId | ExpYears | ExpMonths | Experience | RatingSubmitted | RatingApproved |
+----------+------------+---------+----------+-----------+------------+-----------------+----------------+
| CSSL9610 | arcgis | arcgis1 | 0.00 | 0.00 | 0.00 | 1.00 | NULL |
| CSSL9610 | arcgis | arcgis2 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
| CSSL9610 | arcgis | arcgis3 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
| CSSL9610 | arcgis | arcgis4 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
| CSSL9610 | arcgis | arcgis5 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
| CSSL9610 | arcgis | arcgis6 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
| CSSL9610 | arcgis | arcgis7 | 0.00 | 0.00 | 0.00 | 0.00 | NULL |
+----------+------------+---------+----------+-----------+------------+-----------------+----------------+
Und Tabelle 1 "MySkills_details' [ primary key (EmpId)]
+-------+------------------+---------------+----------------+--------+---------------+---------+------------+
| EmpId | Experience_Prior | Qualification | Specialization | Status | LastSubmitted | NextDue | ApprovedOn |
+-------+------------------+---------------+----------------+--------+---------------+---------+------------+
Gerade jetzt, es gibt keine Daten in MySkills_details.
Ich hab einen Foreign key auf EmpId in MySkills_details verweisen auf EmpId in MySkills, das ist nicht möglich, da die zusammengesetzten Primärschlüssel in der MySkills.
Also habe ich beschlossen zu gehen die andere Weise Runde. Außer das einsetzen geschieht in der MySkills erste und es gibt keine BEFORE-INSERT-Trigger in SQL Server, soweit ich weiß.
Also, Wie schreibt man einen trigger wie VOR LEGEN die Daten einfügt in MySkill_details zuerst vor dem einsetzen in MySkills.
InformationsquelleAutor ShyProgrammer | 2016-10-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Testen Sie bitte die folgenden SQL Server-Instead-Of-Trigger, die Prüfungen der ersten Tabelle.
Falls Daten fehlen in Details, fügt es das table
Als zweiten Schritt, es weiter mit dem einfügen in das Fertigkeiten-Tabelle
Weitere Proben auf SQL-Server instead Of-trigger entnehmen Sie bitte dem gegebenen Beispiel.
Aber bitte beachten Sie meine Worte, ich denke, es wird eine alternative Gestaltung zu bewahren-Fähigkeiten, die in einem anderen master-Tabelle.
Und vor dem einsetzen in die details, im Allgemeinen überprüfen wir, dass die master vorhanden ist oder nicht.
Also Ihre Kontrolle im Allgemeinen ausgeführt werden konnte, in die entgegengesetzte Art und Weise.
Nutzer im Allgemeinen legen Sie master-Daten zuerst. In diesem Fall sind die Fähigkeiten, die Tabelle Daten.
Dann werden die details ausgefüllt sind.
Wenn Es bis zu mir, ich hätte einfach Hinzugefügt, die eine identity-Spalte in der Fertigkeiten-Tabelle und hätten vermieden werden können, diese Komplexität von zusammengesetzten Primärschlüssel
War in der Lage zu erreichen, was ich wollte durch die Schaffung der trigger, wie Sie vorgeschlagen und das optimieren der code zum einfügen von Daten in MySkills Tabelle ein bisschen in der Anwendung. Vielen Dank 🙂
InformationsquelleAutor Eralper