命名約束 vs 系統生成的約束

2021-04-17 05:49:45 字數 1557 閱讀 7063

當你為乙個表定義約束時,給約束命名是乙個好習慣。另外,sql server會為約束建立系統自動生成的名稱。當在沒有給約束命名的情況下,生成資料定義語言(ddl)(當ddl應用在幾個資料庫上時),那麼系統生產約束名一般是不一樣的。

在為資料庫生成計畫後,再生成詳細的約束列表,與乙個詳細計畫構造的合法約束列表進行對比,是乙個很好的習慣。當資料庫相當大時,這樣做是非常有益的。

下面的指令碼演示了命名

約束、不命名

約束及系統自動生成的約束名之間的區別,三者使用了同樣的表,只不過每次都是重新建立的:

create table parent

(pkey1 int not null

constraint pk_parent primary key (pkey1))

go create table constraintname

(pkey int not null

constraint pk_cnstnm primary key,

parent_pkey1 int not null,

col1  int null

constraint ck_cnstnm_col1 check  (col1 in ( 'a','b' ) )

constraint df_cnstnm_col1 default 1,

constraint fk_parent_cnstnm foreign key (parent_pkey1)

references parent (pkey1))go

exec sp_helpconstraint constraintname

godrop table constraintname

gocreate table constraintname

(pkey int not null

primary key,

parent_pkey1 int not null

foreign key (parent_pkey1) references parent(pkey1),

col1  int null

check  (col1 in ( 'a','b' ) )

default 1)go

exec sp_helpconstraint constraintname

godrop table constraintname

gocreate table constraintname

(pkey int not null

primary key,

parent_pkey1 int not null

foreign key (parent_pkey1) references parent(pkey1),

col1  int null

check  (col1 in ( 'a','b' ) )

default 1)go

exec sp_helpconstraint constraintname

godrop table constraintname

godrop table parent

go

差分約束系統專題 對差分約束系統的理解

具體能解決的問題 求最長路,最短路,或者判斷解是否存在。在建邊的時候 一般是給你區間減法的關係,或者是這個點到另乙個點的關係。如果給你的關係是除法的話,我們可以通過使用兩邊同時取log的方式,將除法變成兩個式子的減法,這樣就轉換成了減法的建邊。判斷最優解的時候 一般是判斷是否有負環或者正環,但是乙個...

vivado的pll時鐘約束的重新命名

vivado的pll約束 重新命名 主要是下面這三句話 在vivado中pll會自動約束,一般約束的名字即為pll輸出到bufg i線路的名字 即約束語句如下 create generated clock name clk out1 my pll get pins u my pll inst pll...

Xcode之修改系統生成的注釋模板

在使用xcode建立工程或者新建類的時候,頂部都會有一些xcode幫我們生成的注釋 比如上面這一段,但有時候我們想在這部分注釋裡面新增一些內容,比如自己的部落格位址,github位址,公司資訊等等.特別是想開源一些工具或者自己寫一些框架的時候。這時候我們總不能乙個乙個檔案的去改吧,太繁瑣了。其實xc...