程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> 編寫SQL腳本的一些注意事項

編寫SQL腳本的一些注意事項

編輯:關於SqlServer
在應用軟件系統的開發中,對數據庫的操作是必不可少的。在開發團隊中,一般不允許開發人員隨意的修改表結構、視圖結構或系統數據,這對項目組來說,危害是致命的,特別是在已經上線的環境中,更是嚴禁這種行為。
    我們采取的一般做法是開發人員提交SQL腳本,統一交由管理員來執行這些腳本,在執行腳本過程中可能會遇到多次執行的情況(比如管理員第一次執行腳本文件時出錯,開發人員修改後,再執行該文件,可能其中有些正確的語句已經執行了。),重復執行語句的結果可能造成重復數據、SQL報錯等。如何避免這種情況的發生呢,在我們撰寫腳本語句時就要先作判斷,避免因為某個語句出錯而導致整個腳本文件不能執行下去的情況發生。
    一般可以使用if exists/if not exists語句進行判斷,以下列出一些常用的判斷(在SQL Server 2005下)。
1、插入初始數據或配置數據
在作數據初始時,如果插入的數據不加以判斷,可能會插入多條相同的配置數據,可能會引起系統的嚴重錯誤。在插入數據時可以使用以下語句加以判斷:
if not exists(select * from table1 where fIEld1 = value1)
begin
 insert table1 (field1,fIEld2 ) values (value1, value2)
end

2、新建表
if not exists (select * from sys.tables where name = 'table2')
begin
 create table (...)
end

3、修改列
if not exists (select * from sys.columns, sys.tables
  where sys.columns.object_id = sys.tables.object_id
   and sys.columns.name ='fIEld3'
   and sys.tables.name ='table3')
begin
 alter table add fIEld3 varchar(50)
end
else
begin
 alter table alter column fIEld3 varchar(50)
 -- alter table del column fIEld3
end


4、修改視圖、存儲過程、同義詞等

--視圖
if exists (select * from  sys.views where name = 'vIEw1')
 drop view vIEw1
go

create view vIEw1
...

--存儲過程
if exists (select * from  sys.objects where name = 'proceduer1')
 drop proc procedure1
go

create proc procedure1
...

--同義詞
if exists (select * from  sys.synonyms where name = 'synonyms1')
 drop synonyms synonyms1
go

create synonyms synonyms1
...

 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved