خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را


بررسی وجود یا عدم وجود یک جدول در SQL Server

بررسی وجود یا عدم وجود یک جدول در SQL Server
شما به طرق مختلفی می توانید وجود یک جدول را در SQL Server بررسی کنید که در این پست ما هم قصد داریم با استفاده از این روش ها، وجود یا عدم وجود یک جدول در SQL Server را به شما دوستان نشان دهیم.

نرم افزار سامانه مودیان راهکار



The sys.tables View

در روش اول از View سیستمی sys.tables استفاده خواهیم کرد. در این ویدئو برای هر جدول(user table) یک رکورد بر میگردد. پس نام جدول را در قسمت Where می توانید فیلتر کنید.

SELECT
object_id
FROM sys.tables
WHERE name = 'Artists';

+-------------+
| object_id |
|-------------|
| 885578193 |
+-------------+

حتی می توانید نام schema را به مواردی که بررسی می کنید، در کوئری اضافه کنید. در این صورت کوئری فوق به شکل زیر خواهد شد:

SELECT
object_id
FROM sys.tables
WHERE name = 'Artists'
AND SCHEMA_NAME(schema_id) = 'dbo';

+-------------+
| object_id |
|-------------|
| 885578193 |
+-------------+

توجه داشته باشید که sys.tables فقط ID مربوط به schema را بر می گرداند. از این رو باید آن ر ابه تابع SCHEMA_ NAME پاس دهیم تا نام آن را برگرداند. ضمنا اگر schema ID را بدانید، می توانید مستقیما از آن استفاده کنید.


SELECT
object_id
FROM sys.tables
WHERE name = 'Artists'
AND schema_id = 1;

+-------------+
| object_id |
|-------------|
| 885578193 |
+-------------+

The sp_tables Stored Procedure

در این روش از stored procedure سیستمی sp_tables استفاده خواهیم کرد.

sp_tables 'Artists'

+-------------------+---------------+--------------+--------------+-----------+
| TABLE_QUALIFIER | TABLE_OWNER | TABLE_NAME | TABLE_TYPE | REMARKS |
|-------------------+---------------+--------------+--------------+-----------|
| Music | dbo | Artists | TABLE | NULL |
+-------------------+---------------+--------------+--------------+-----------+

این stored procedure سیستمی علاوه بر View، نام جداول را هم بر میگرداند. اگر قراراست که از آن برای نمایش نام جداول استفاده کنید، باید فقط آن را با استفاده از table_type=@TABLE به جداول محدود کنید.

INFORMATION_SCHEMA.TABLES

View ی سیستمی INFORMATION_SCHEMA.TABLES برای هر جدول یا View در پایگاه داده فعلی که کاربر فعلی برای آن مجوز دارد ، یک ردیف برمی گرداند. به sys.tablesشباهت دارد و اما ستون های کمتری را برمی گرداند.

SELECT *
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_NAME = 'Artists';

+-----------------+----------------+--------------+--------------+
| TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | TABLE_TYPE |
|-----------------+----------------+--------------+--------------|
| Music | dbo | Artists | BASE TABLE |
+-----------------+----------------+--------------+--------------+


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

SELECT *
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE'
AND TABLE_NAME = 'Artists'
AND TABLE_SCHEMA = 'dbo';

The OBJECT_ID() Function

از تابع OBJECT_ ID هم برای این منظور می توانید استفاده کنید. اگر مقدار غیر Null بود، یعنی چنین جدولی وجود دارد.

SELECT OBJECT_ID('Artists', 'U') AS Result;

+-----------+
| Result |
|-----------|
| 885578193 |
+-----------+

خروجی فوق نشان دهنده این است که جدول وجود دارد. U به معنی user-defined table می باشد که در اسکریپت فوق استفاده شده است.
حتی نام را بصورت زیر نام کامل است می توانید وارد کنید(نام جدول، نام Schema و نام دیتابیس)

SELECT OBJECT_ID('Music.dbo.Artists', 'U') AS Result;

+-----------+
| Result |
|-----------|
| 885578193 |
+-----------+

اگر جدولی وجود نداشته باشد در خروجی NULL دریافت خواهید کرد:

SELECT OBJECT_ID('Oops!', 'U') AS Result;

+----------+
| Result |
|----------|
| NULL |
+----------+



نمایش دیدگاه ها (0 دیدگاه)

دیدگاه خود را ثبت کنید:

انتخاب تصویر ویرایش حذف
توجه! حداکثر حجم مجاز برای تصویر 500 کیلوبایت می باشد.


دسته بندی مطالب خوش آموز