1樓:我要註冊和登入
先把主鍵drop掉alter table books drop constraint pk_books_bookid ;
然後再建立:alter table books add constraint pk_books_bookid primary key (bookid)
--也把那個外來鍵去掉看看。因為有主外來鍵約束就不能去掉主鍵的。
2樓:匿名使用者
這矛盾呢。
解釋:主鍵的作用就是確認唯一性呢,把主鍵刪掉之後是可以插入相同資料,可是此時在設定主鍵生效,發現有相同的資料,是沒法設定的,所以肯定不行的。如果就沒有主鍵衝突,那隨時可以刪除主鍵,新增主鍵(如果主鍵有外來鍵關聯的情況下,也不一定能夠刪除成功的)。
3樓:
刪除約束
alter table books
drop constraint pk_books_bookid加約束alter table books
addconstraint pk_books_bookid primary key clustered (bookid)
4樓:席藹權問雁
暈啊、、這個問題我暈。。既然你想設為有重複的。那你該列就不能作為主鍵,sql中主鍵的定義你好好看看。不然,你有重複的這個列,你絕對是設成主鍵的。。
如果你想設重複的話,那你最好單獨再加一個自動增長列,把這個列設為主鍵列。那麼author列就可以有重複值了、
主鍵約束,外來鍵約束,空值約束,預設值約束,唯一約束,檢查約束的各個作用是什麼?
5樓:匿名使用者
主鍵約束:列內容不能重複,且不能為空
外來鍵約束:內容必須是所關聯主鍵的值其中的值空值約束:不能為空
預設約束:當插入時沒有賦值,會使用預設值
唯一約束:列的內容都是唯一的,不以重複
檢查約束:列的內容必須符合要求。如check (job in(‘engineer’,’sales’,’manager’));
6樓:匿名使用者
主鍵約束:確定行的標識,不能為空
外來鍵約束:內容必須是所關聯主鍵的值其中的值空值約束:不能為空
預設約束:當插入時沒有賦值,會使用預設值
唯一約束:列的內容都是唯一的,不以重複
檢查約束:列的內容必須符合要求。如check (job in(‘engineer’,’sales’,’manager’));
7樓:匿名使用者
主鍵約束在表中定義一個主鍵來唯一確定表中每一行資料的識別符號.
外來鍵約束主要用來維護兩個表之間資料的一致性。
唯一約束保證在一個欄位或者一組欄位裡的資料與表中其它行的資料相比是唯一的。
別的還不太清楚,希望對你有用!!!!!
sql主鍵約束和唯一約束有什麼區別呢?謝謝
8樓:有雨入夢
我理解的是主鍵約束是唯一約束的一種,不過在一張表裡面主鍵約束只可一有一個,唯一約束就不一樣了
9樓:dl_會飛的青蛙
主鍵不能為空
而唯一可以為空
相同的就是 都不允許重複
10樓:
主鍵:一張表只能定義一個主鍵,主鍵可以包含一個或一個以上的欄位,並且這些欄位的值必須是唯一的。除了主鍵的欄位不允許為空外,其它方面主鍵和唯一性索引很相似。
唯一約束:可以在一個欄位,一組欄位或一個表上定義唯一性約束,保證了不出現相同的值。
SQL資料庫修改某張表主鍵的長度
在外碼錶設計中選擇 關係 將外碼引用的更新規則改為 級聯 後,即可修改。你這樣設定了以後你修改主碼錶的欄位長度,外碼錶對應的欄位長度會自動修改的。有外來鍵約束.先刪掉約束 再改 如果原表中有資料 1.建立臨時表 create table tmp bh int not null,name char 1...
sql資料庫兩個外來鍵做聯合主鍵
聯合主鍵是有著特殊的需求的。建表的時候建立 create table 表名 欄位名1 int not null,欄位名2 nvarchar 13 not null primary key 欄位名1,欄位名2 欄位名3 欄位名n 或者建表之後修改表結構 alter table 表名 with noch...
sql中怎麼查詢名稱以,SQL中怎麼查詢名稱以 A
海天盛 1 建立測試表,如下圖。create table test col 1 id number,var varchar2 200 create table test col 2 id number,var varchar2 200 2 插入測試資料,如下圖。insert into test co...