① 創建唯一索引的 sql語句
sql語句創建唯一索引的方法:
1、在sql server資料庫中:
CREATE UNIQUE INDEX AK_UnitMeasure_Name
ON Proction.UnitMeasure (Name);
GO
2、在oracle中床創建
CREATE unique INDEX 索引名 ON 表名 (列名)
TABLESPACE 表空間名;
② SQL unique約束的用法
UNIQUE 約束唯一標識資料庫表中的每條記錄。
UNIQUE 和 PRIMARY KEY 約束均為列或列集合提供了唯一性的保證。
PRIMARY KEY 擁有自動定義的 UNIQUE 約束。
請注意,每個表可以有多個 UNIQUE 約束,但是每個表只能有一個 PRIMARY KEY 約束。
獨特的SQL制約創建表
下列SQL創建了一個唯一約束的「 P_Id 」一欄時, 「人」是創建表:
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)
SQL Server / Oracle / MS Access: CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
③ sql語句建表,其中一列數據的值是唯一的,但允許有多個空值。不是unique約束,unique不允許有多個空值。
假設要實現約束的列名為C1, 所在表名為MyTable
(1)除了SQL SERVER 以外的大型資料庫都是允許 UNIQUE約束有多個空值的。
(2)SQL Server 2008中有了一個解決方案,那就是篩選索引。
CREATE UNIQUE NONCLUSTERED INDEX MyTable
ON MyTable(C1)
WHERE C1 is not null
GO
(3)SQL Server 2008以下版兩個方案
A、使用觸發器在插入和更新時控制
CREATE trigger Mytrigger on MyTable for insert, update as
BEGIN
IF (select max(cnt) from (select count(i.c1)
as cnt from MyTable, inserted i where MyTable.c1=i.c1 group
by i.c1) x) > 1
ROLLBACK TRAN
END
B、 在約束中使用自建函數來實現
創建驗證邏輯函數
CREATE FUNCTION [dbo].[fn_CK_MyTable_C1]()
RETURNS BIT
AS
BEGIN
IF(EXISTS(
SELECT 1
FROM MyTable AS a
WHERE (C1 IS NOT NULL) AND EXISTS
(SELECT 1 AS Expr1
FROM MyTable
WHERE (C1 IS NOT NULL) AND (C1 = a.C1) )
))
RETURN 0
RETURN 1
END
GO
在約束中引用函數:
ALTER TABLE test_tb
ADD CONSTRAINT CK_MyTable_C1 CHECK (dbo.fn_CK_MyTable_C1() = 1)
GO
④ 在執行sql語句時報錯:ORA-00001: unique constraint是怎麼回事
違反了唯一性約束,所以導致插入不正確。
⑤ sql中UNIQUE有用法最好能舉個例子!謝謝!!
UNIQUE 約束強制實施列集中值的唯一性。
根據 UNIQUE 約束,表中的任何兩行都不能有相同的列值。另外,主鍵也強制實施唯一性,但主鍵不允許 NULL 作為一個唯一值。
以下示例強制的限制是,Proct 表的 Name 列必須唯一。
Name nvarchar(100) NOT NULL
UNIQUE NONCLUSTERED
⑥ 創建唯一索引的sql語句是什麼
創建唯一索引的sql語句如下:
CREATE [UNIQUE|CLUSTERED] INDEX INDEX_NAME ON TABLE_NAME(PROPERTY_NAME)
其中UNIQUE和CLUSTERED為可選項,分別是建立唯一索引和聚簇索引。
具體解釋為:
UNIQUE:表示此索引的每一個索引值只對應唯一的數據。
CLUSTERED:表示要建立的索引時聚簇索引,即索引項的順序與表中記錄的物理順序一致的索引組織。