Masukkan data ke dalam jadual ibu bapa-anak
Matlamat contoh ini adalah untuk memasukkan data daripada UDT masuk (@tEmployeeData) ke dalam berbilang jadual, memastikan pemetaan yang betul antara rekod ibu bapa dan anak.
Menyelesaikan isu pemetaan
Untuk mewujudkan pemetaan yang diperlukan, kami menambah lajur employeeId sementara pada UDT dan mengisinya dengan nilai berterusan. Selain itu, kami mencipta pembolehubah jadual (@EmployeeidMap) untuk memetakan ID pekerja sementara dalam UDT dengan ID pekerja sebenar yang dijana dalam jadual sasaran.
Isi jadual utama
Kami menggunakan MERGE untuk mengisi jadual @MainEmployee dengan nilai daripada data yang dimasukkan dan data sumber. Ini membolehkan kami menangkap nilai EmployeeID yang dijana dan mengisi jadual pemetaan pada masa yang sama.
<code class="language-sql">MERGE INTO @MainEmployee USING @tEmployeeData AS sourceData ON 1 = 0 WHEN NOT MATCHED THEN INSERT (FirstName, LastName) VALUES (sourceData.FirstName, sourceData.LastName) OUTPUT sourceData.EmployeeId, inserted.EmployeeID INTO @EmployeeidMap (temp_id, id);</code>
Peta dan masukkan ke dalam jadual ibu bapa-anak
Kami kemudian menyertai @tEmployeeData dengan @EmployeeidMap untuk mendapatkan ID pekerja sebenar, yang kami gunakan untuk mengisi jadual @ParentEmployeeDepartment. Begitu juga, kami menyambungkan @ParentEmployeeDepartment dengan @tEmployeeData untuk memetakan ID induk kepada data anak dan memasukkan data ke dalam @ChildEmployeeDepartmentTypeA dan @ChildEmployeeDepartmentTypeB.
Sisipan ujian
Untuk mengesahkan bahawa pemetaan berjaya, kami melaksanakan pertanyaan yang menggabungkan data UDT dengan jadual pemetaan dan sasaran.
<code class="language-sql">SELECT FirstName, LastName, SentData.DepartmentType As [部门类型], DepartmentBuilding As 建筑物, DepartmentEmployeeLevel As [员工级别], DepartmentTypeAMetadata As [A 元数据], DepartmentTypeBMetadata As [B 元数据], SentData.EmployeeId As 临时ID, EmpMap.id As [员工ID], DeptMap.ParentEmployeeDepartmentID As [部门ID] FROM @tEmployeeData SentData INNER JOIN @EmployeeidMap EmpMap ON SentData.EmployeeId = temp_id INNER JOIN @ParentEmployeeDepartment DeptMap ON EmpMap.id = DeptMap.EmployeeID</code>
Pendekatan ini memastikan bahawa data anak dipetakan dengan betul ke rekod induk masing-masing, sambil mengoptimumkan prestasi dengan mengelakkan operasi baris demi baris yang tidak perlu.
Atas ialah kandungan terperinci Bagaimana untuk Memasukkan Data dengan Cekap ke dalam Jadual Ibu Bapa dan Anak dengan Pemetaan yang Betul?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!