خانه > Persian Contents, SQL Server, T-SQL > نوع داده جدید HIERARCHYID (وارد کردن (Insert) گره های جدید )

نوع داده جدید HIERARCHYID (وارد کردن (Insert) گره های جدید )

برای وارد کردن یک گره در یک ساختار درختی ابتدا باید یک مقدار HIERARCHYID برای آن ساخته شود. از متد HIERARCHYID::GetRoot() برای تولید یک مقدار برای گره root استفاده کنید. از متد GetDescwndant برای تولید مقدار زیر یک گره داده شده استفاده کنید. این متد دو مقدار ورودی HIERARCHYID را به صورت اختیاری دریافت کرده  که این دو ورودی جایی را بین خودشان برای گره جدید مشخص میکنند.
توجه داشته باشید که متد بالا تضمین نمیکند که مقدار تولید شده برای HIERARCHYID یکه باشد. برای اجبار کردن تولید یکه باید حتما روی ستون مربوطه یک primary key ، unique constraint و یا unique index تعریف کنید.
به عنوان مثال کد زیر یک stored procedure برای اضافه کردن یک گره به ساختار درختی میسازد :

IF OBJECT_ID(‹dbo.usp_AddEmp›, ‹P›) IS NOT NULL DROP PROC dbo.usp_AddEmp;
GO
CREATE PROC dbo.usp_AddEmp
  @empid   AS INT,
  @mgrid   AS INT = NULL,
  @empname AS VARCHAR(25),
  @salary  AS MONEY
AS
 
DECLARE
  @hid            AS HIERARCHYID,
  @mgr_hid        AS HIERARCHYID,
  @last_child_hid AS HIERARCHYID;
 
IF @mgrid IS NULL
  SET @hid = HIERARCHYID::GetRoot();
ELSE
BEGIN
  SET @mgr_hid = (SELECT hid FROM dbo.Employees WHERE empid = @mgrid);
  SET @last_child_hid =
    (SELECT MAX(hid) FROM dbo.Employees
     WHERE hid.GetAncestor(1) = @mgr_hid);
  SET @hid = @mgr_hid.GetDescendant(@last_child_hid, NULL);
END
 
INSERT INTO dbo.Employees(empid, hid, empname, salary)
  VALUES(@empid, @hid, @empname, @salary);
GO

کد بالابه اندازه کافی گویا هست که احتیاج به توضیح نداشته باشد. با استفاده از کد پایین میتوانید چندین گره به جدول اضافه کنید :

EXEC dbo.usp_AddEmp @empid =  1, @mgrid = NULL, @empname = ‹David›  , @salary = $10000.00;
EXEC dbo.usp_AddEmp @empid =  2, @mgrid =    1, @empname = ‹Eitan›  , @salary = $7000.00;
EXEC dbo.usp_AddEmp @empid =  3, @mgrid =    1, @empname = ‹Ina›    , @salary = $7500.00;
EXEC dbo.usp_AddEmp @empid =  4, @mgrid =    2, @empname = ‹Seraph› , @salary = $5000.00;
EXEC dbo.usp_AddEmp @empid =  5, @mgrid =    2, @empname = ‹Jiru›   , @salary = $5500.00;
EXEC dbo.usp_AddEmp @empid =  6, @mgrid =    2, @empname = ‹Steve›  , @salary = $4500.00;
EXEC dbo.usp_AddEmp @empid =  7, @mgrid =    3, @empname = ‹Aaron›  , @salary = $5000.00;
EXEC dbo.usp_AddEmp @empid =  8, @mgrid =    5, @empname = ‹Lilach› , @salary = $3500.00;
EXEC dbo.usp_AddEmp @empid =  9, @mgrid =    7, @empname = ‹Rita›   , @salary = $3000.00;
EXEC dbo.usp_AddEmp @empid = 10, @mgrid =    5, @empname = ‹Sean›   , @salary = $3000.00;
EXEC dbo.usp_AddEmp @empid = 11, @mgrid =    7, @empname = ‹Gabriel›, @salary = $3000.00;
EXEC dbo.usp_AddEmp @empid = 12, @mgrid =    9, @empname = ‹Emilia› , @salary = $2000.00;
EXEC dbo.usp_AddEmp @empid = 13, @mgrid =    9, @empname = ‹Michael›, @salary = $2000.00;
EXEC dbo.usp_AddEmp @empid = 14, @mgrid =    9, @empname = ‹Didi›   , @salary = $1500.00;

دسته‌ها:Persian Contents, SQL Server, T-SQL
  1. هنوز دیدگاهی داده نشده است.
  1. No trackbacks yet.

پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

عکس گوگل+

شما در حال بیان دیدگاه با حساب کاربری Google+ خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

%d وب‌نوشت‌نویس این را دوست دارند: