sql判斷約束存在
㈠ sql server 判斷 這么判斷某列是否存在 預設約束,這么判斷某列的數據類型
查找表中列是否存在預設約束:
select * from sysobjects where name='DF_表名_列名'
刪除約束
alter table 表名 drop constraint 約束名
查詢表中某列類型:
select type_name(xtype) from syscolumns where id=object_id('表名') and name='列名'
㈡ 能在C#中if判斷Sql表是否有主鍵約束呢刪除時它老是報主鍵有約束!
這個 刪除時抱錯的, 一般是 外鍵錯誤.
例如
班級表 有
1班
2班
3班
學生表有
張三(1班)
李四(2班)
王五(3班)
班級表和學生表上面, 有個默認的外鍵.
現在你嘗試刪除 1班.
那麼資料庫報錯, 原因在於
如果簡單把 班級表的 1班刪除了, 那麼原來在 1班的張三怎麼辦?
處理辦法有2種. ( 1種 自動, 1種手動)
1種自動的
是修改外鍵約束, 為 DELETE CASCADE 方式 或者 SET NULL方式
這種情況下, 你 C# 程序中, 不需要修改任何代碼。
DELETE CASCADE 方式 , 就是如果你 刪除 1班了, 那麼資料庫自動把 張三也刪除了。
SET NULL方式, 就是如果你 刪除 1班了, 那麼資料庫自動把 張三 的 「所屬班級」設置為 NULL.
1種手動
是 C# 代碼裡面, 在刪除班級以前, 先去看看 這個班級下面有沒有學生, 如果有, 那麼 提示一個消息框給用戶 「一班下面已經存在有學生,確認要把班級與學生數據一同刪除么?」
如果用戶按了 確認, 那麼 C# 先刪除學生, 後刪除班級。
㈢ SQL中用語句查看錶列的約束以及解除約束
SELECT
USER_CONS_COLUMNS.CONSTRAINT_NAMEAS約束名,
USER_CONS_COLUMNS.TABLE_NAMEAS表名,
USER_CONS_COLUMNS.COLUMN_NAMEAS列名,
USER_CONS_COLUMNS.POSITIONAS位置,
CONSTRAINT_TYPE,
SEARCH_CONDITION
FROM
USER_CONSTRAINTS
JOINUSER_CONS_COLUMNS
ON(USER_CONSTRAINTS.CONSTRAINT_NAME
=USER_CONS_COLUMNS.CONSTRAINT_NAME)
WHERE
CONSTRAINT_TYPEIN('C','V','O');
其實主要就是看
USER_CONSTRAINTS與 USER_CONS_COLUMNS 這2個視圖.
資料庫管理員的話
可以看
DBA_CONSTRAINTS與 DBA_CONS_COLUMNS 這2個視圖.
㈣ sql語句 判斷表是否存在
IF EXISTS(SELECT name FROM [sysobjects] WHERE name = '表名')
PRINT '該表存在'
ELSE
PRINT '該表不存在'。
㈤ sql server怎麼查詢某一表的某一欄位是否有約束
示例:
CREATE TABLE AA (
BB INT UNIQUE
);
SELECT
tab.name AS [表名],
idx.name AS [約束名稱],
col.name AS [約束列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_unique_constraint = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id)
WHERE
tab.name = 'AA'
結果:
表名 約束名稱 約束列名
AA UQ__AA__3214B5C34460231C BB
㈥ 什麼是SQL裡面的約束條件
SQL 約束(Constraints)
SQL 約束用於規定表中的數據規則。
如果存在違反約束的數據行為,行為會被約束終止。
約束可以在創建表時規定(通過 CREATE TABLE 語句),或者在表創建之後規定(通過 ALTER TABLE 語句)。
本回答來自:SQL 約束(Constraints)_樹懶學堂
SQL CREATE TABLE + CONSTRAINT 語法
㈦ sql server如何查詢一個表中的一個列是否存在唯一約束 比如查詢 AA表的 BB列
CREATE TABLE AA (
BB INT UNIQUE
);
SELECT
tab.name AS [表名],
idx.name AS [約束名稱],
col.name AS [約束列名]
FROM
sys.indexes idx
JOIN sys.index_columns idxCol
ON (idx.object_id = idxCol.object_id
AND idx.index_id = idxCol.index_id
AND idx.is_unique_constraint = 1)
JOIN sys.tables tab
ON (idx.object_id = tab.object_id)
JOIN sys.columns col
ON (idx.object_id = col.object_id
AND idxCol.column_id = col.column_id)
WHERE
tab.name = 'AA'
表名 約束名稱 約束列名
AA UQ__AA__3214B5C34460231C BB
㈧ SQL怎麼設置帶判斷的唯一性約束
將AB都設置為主鍵:
單一個主鍵的內容和其他行重復是不會提示的,只有兩個主鍵的內容都重復才會有主鍵重復提示
例如列a,b
已有
a,b
1,2
2,3
現在鍵入
a,b
1,3
是不會提示重復的
如果鍵入
a,b
1,2
此時才會提示重復,這樣就達到目的了
㈨ 如何查看SQL表中都存在哪些約束
alt+F1就可以查看該表的表結構以及各種約束
㈩ 如何判斷一個表是否建立索引約束等信息的SQL語句
--獲取某表的所有索引,包括索引歸屬列名
sp_statistics 'Table'
--獲取索引與索引歸屬列以及描述信息
sp_helpindex 'Table'
--獲取某表的約束信息以及歸屬列
sp_helpconstraint 'Table'
--獲取某表中的自動增長列的列名
select name from syscolumns
where id=object_id('Table') and status & 128 = 128
--獲取某表中的自動增長列的列名
select name from syscolumns
where id=object_id('Table') and
COLUMNPROPERTY(id,name,'IsIdentity')=1