چگونه جدول هایی با رکورد های محدود ایجاد کنیم؟

tel

photo_2016-11-25_03-20-0711

در برخی از پروژه ها به شرایطی می رسید که نیاز دارید جدول شما تنها تعداد محدودی رکورد در خود جای دهد و بیشتر از این تعداد رکورد را نتوان در

جدول ثبت کرد . برای مثال میخواهید تنها ۵ User در برنامه تان امکان ثبت شدن داشته باشند و مشتریان شما نتوانند بیشتر از این تعداد کاربر را برای احراز هویت و استفاده از برنامه تعریف کنند. اگر نخواهید برای این کار،کدهای نوشته شده در برنامه خود را تغییر دهید و یا برای اطمینان بیشتر علاوه بر کدنویسی و کنترل های انجام شده در برنامه، از تغییرات و ثبت اطلاعات اضافه به صورت مستقیم در جدول جلوگیری کنید ؛ باید افزایش تعداد رکورد های جدول را کنترل کنید. در حالتی دیگر ممکن است بخواهید یک لایسنس سازمانی برای برنامه خود تعریف کنید و سیستم هایی که می توانند از برنامه شما استفاده می کنند را در یک جدول بانک اطلاعاتی تعریف کنید. در این حالت نیز لازم است تا علاوه بر کنترل تعداد رکورد های قابل ثبت با استفاده از کد نویسی در برنامه ، از افزایش رکوردها به صورت مستقیم در بانک اطلاعاتی جلوگیری کرد.

در این مقاله دو روش را برای این کار با استفاده از SQL Server به شما معرفی می کنیم.

روش اول : طراحی جدولی که در آن با استفاده از Check تعداد رکورد ها بررسی می شوند :

CREATE TABLE Table1 (

       ID TINYINT NOT NULL UNIQUE CHECK (ID BETWEEN 1 AND 5),

       NameFamily nvarchar(50) ,

       UserName nvarchar(20) NOT NULL ,

       Pass nvarchar(20) NOT NULL

)

 

در این روش بررسی روی ستون ID انجام می شود. به این صورت که مقدار این ستون باید عددی بین ۱ تا ۵ باشد. در صورتی که مقدار وارد شده از ۵ بزرگتر باشد پیغام خطایی به صورت زیر به شما نشان داده می شود:

 

The INSERT statement conflicted with the CHECK constraint “CK__Table1__ID__267ABA7A”.

The conflict occurred in database “TestDB”, table “dbo.Table1”, column ‘ID’.

 

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

 

روش دوم : استفاده از Trigger :

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

 

create trigger [dbo].[LimitTable1]

on [dbo].[Table1]

after insert

as

    declare @tableCount int

 

       select @tableCount = Count(*)

           from [Table1]

       if @tableCount > 5

    begin

           rollback

    end

 

برای اطمینان بیشتر می توانید از ترکیب هردو روش ذکر شده استفاده نمایید .

درباره نویسنده

مطالب مرتبط

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دانلود رایگان
فایل ویدئویی خاطرات نرم افزارهای 14 سال قبل استاد مدحج + پروژه عظیم کدهای سایت کد تجاری
دانلود رایگان
فایل صوتی راز کیفیت محصولات اپل با شی گرا
دانلود رایگان
مالکیت فکری نرم افزار در داخل تیم تولید و خارج از آن
دانلود رایگان
نگاه شی گرا با استفاده از مکانیزم طبیعی ذهن در تولید نرم افزار
دانلود رایگان
گزارش سازی با linqtosql و stimulsoft