PDA

View Full Version : استفاده از uniqueidentifier یا indentityدر insert



Easy_Systems
یک شنبه 05 اردیبهشت 1389, 16:29 عصر
باسلام
من در استفاده از نوع uniqueidentifier به مشکلی برای insert کردن برخورد کردم با جستجوهایی که در سایت داشتم به این نتیجه رسیدم که می شود برای کلید اصلی از نوعint به همراهindentity استفاده کرد
از دوستان عزییز خواهشمندم اگه امکان داره نمونه هایی برای insert از هر دوروش تو این تاپیک قرار بدم
پیشاپیش از لطف اساتید ممنونم

محمد سلیم آبادی
یک شنبه 05 اردیبهشت 1389, 16:38 عصر
سلام،
برای تولید مقادیر از نوع uniqueidentifier می تونید از تابع newid استفاده کنید:
INSERT INTO table_name (GUID) VALUES(NEWID())--d

اگر ستونی دارین که دارای خصیصه ی identity هست نیازی نیست که به طور صریح به آن مقدار دهی کنید. کافی یک سطر ایجاد بشه این ستون مقدارش به صورت اتوماتیک تولید خواهد شد.

Easy_Systems
یک شنبه 05 اردیبهشت 1389, 17:38 عصر
شرمنده سوالام خیلی مبتدیانست
من insert رو برای حالتی که کلید اصلی indentity تعریف شده باشه نوشتم وقتی exe pro میزنم جدول مقداردهی باز میشه
اگه واسه کلید مقدار ندم خطا میده
اگه هم مقدار بدم بازم خطا میده
فکر کنم کلید رو درست تعریف کردم چون با insert بصورت دستی تو جودل خودش به کلید مقدار میده و ثبت میکنه اینم پروسیجرشه

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go



ALTER Procedure [dbo].[add_password]
@row_number int,
@id nvarchar(50),
@password nvarchar(50)
AS
Begin
Insert Into pass
([row_number],[id],[password])
Values
(@row_number,@id,@password)
End

ممنون از توجهتون استاد

محمد سلیم آبادی
یک شنبه 05 اردیبهشت 1389, 17:49 عصر
اگر ستون row_number دارای خصیصه ی identity هست نبایستی اون رو در عبارت Insert شرکت بدین یعنی کد مربوط به عبارت insert اینطوری میشه:
INSERT INTO pass (id, password) VALUES(@id, @password)--d

همچنین در قسمت پارامتر های ورودی نیازی به اون پارامتر نیست.

Easy_Systems
یک شنبه 05 اردیبهشت 1389, 18:14 عصر
واقعاً ممنون استاد که وقت گذاشتین و پاسخی کامل دادین
مشکلم حل شد

محمد سلیم آبادی
یک شنبه 05 اردیبهشت 1389, 18:22 عصر
البته می توانیم بطور مستقیم و صریح در ستون هایی که دارای خصیصه ی IDENTITY هستند مقداری درج کنیم ولی عموما این کار صورت نمی گیره.