يقوم SqlServer بإنشاء جدول باستخدام MySql مثل المفتاح الأساسي للزيادة التلقائية

StackOverflow https://stackoverflow.com/questions/85034

سؤال

أرغب في إنشاء جدول في SqlServer يضيف، عند الإدراج، مفتاحًا أساسيًا متزايدًا تلقائيًا.يجب أن يكون هذا معرفًا يتم زيادته تلقائيًا مشابهًا لوظيفة MySql auto_increment.(أقل)

create table foo  
(  
user_id int not null auto_increment,  
name varchar(50)  
)  

هل هناك طريقة للقيام بذلك دون إنشاء مشغل إدراج؟

هل كانت مفيدة؟

المحلول

مثله

create table foo  
(  
user_id int not null identity,  
name varchar(50)  
)

نصائح أخرى

طلب OP مفتاحًا أساسيًا متزايدًا تلقائيًا.الكلمة الأساسية IDENTITY لا تجعل العمود هو المفتاح الأساسي بمفردها.

CREATE TABLE user
(
  TheKey int IDENTITY(1,1) PRIMARY KEY,
  Name varchar(50)
)

لقد أجابوا على سؤالك ولكني أريد إضافة نصيحة واحدة لشخص جديد لاستخدام أعمدة الهوية.في بعض الأحيان يتعين عليك إرجاع قيمة الهوية التي تم إدراجها للتو حتى تتمكن من إدراجها في جدول ذي صلة.ستخبرك العديد من المصادر باستخدام @@identity للحصول على هذه القيمة.لا ينبغي عليك بأي حال من الأحوال استخدام @@identity إذا كنت تريد الحفاظ على تكامل البيانات.سيعطي الهوية التي تم إنشاؤها في المشغل إذا تمت إضافة أحدهم لإدراجه في جدول آخر.نظرًا لأنه لا يمكنك ضمان أن قيمة @@identity ستكون صحيحة دائمًا، فمن الأفضل عدم استخدام @@identity مطلقًا.استخدمscope_identity() للحصول على هذه القيمة بدلاً من ذلك.أعلم أن هذا خارج الموضوع قليلاً، ولكنه مهم لفهم كيفية استخدام الهوية مع SQL Server.وثق بي، أنت لا تريد إصلاح مشكلة السجلات ذات الصلة التي تحتوي على قيمة هوية خاطئة يتم تغذيتها بها.وهذا شيء يمكن أن يحدث بشكل خاطئ لعدة أشهر قبل أن يتم اكتشافه ويكاد يكون من المستحيل إصلاح البيانات بعد ذلك.

كما ذكر آخرون:أضف سمة الهوية إلى العمود، واجعله مفتاحًا أساسيًا.

ومع ذلك، هناك اختلافات بين IDENTITY MSSQL وAUTO_INCREMENT الخاص بـ MySQL:

  • يتطلب MySQL أن يتم تحديد قيود فريدة (غالبًا في شكل مفتاح أساسي) لعمود Auto_increment.
    ليس لدى MSSQL مثل هذا المطلب.
  • يتيح لك MySQL إدراج القيم يدويًا في عمود AUTO_INCREMENT.
    يمنعك MSSQL من إدخال قيمة يدويًا في عمود هوية ؛إذا لزم الأمر ، يمكنك تجاوز هذا الأمر عن طريق إصدار أمر "Set Identity_insert tablename On" قبل الإدراج.
  • يسمح لك MySQL بتحديث القيم في عمود AUTO_INCREMENT.
    يرفض MSSQL تحديث القيم في عمود الهوية.

فقط قم بتعيين الحقل كـ مجال الهوية.

أعلن أن المجال هو الهوية

كما هو مذكور أعلاه، استخدم حقل الهوية.

CREATE TABLE foo
(
user_id int IDENTITY(1,1) NOT NULL,
name varchar(50)
)

كما قال الآخرون، فقط قم بتعيين خيار الهوية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top