在應用軟體系統的開發中,對資料庫的操作是必不可少的。在開發團隊中,一般不允許開發人員隨意的修改表結構、檢視結構或系統資料,這對專案組來說,危害是致命的,特別是在已經上線的環境中,更是嚴禁這種行為。
我們採取的一般做法是開發人員提交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)
end2、新建表
if not exists (select * from sys.tables where name = 'table2')
begin
create table (...)
end3、修改列
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)
endelse
begin
alter table alter column field3 varchar(50)
-- alter table del column field3
end4、修改檢視、儲存過程、同義詞等
--檢視
if exists (select * from sys.views where name = 'view1')
drop view view1
gocreate view view1
...--儲存過程
if exists (select * from sys.objects where name = 'proceduer1')
drop proc procedure1
gocreate proc procedure1
...--同義詞
if exists (select * from sys.synonyms where name = 'synonyms1')
drop synonyms synonyms1
gocreate synonyms synonyms1
...
php指令碼的一些注意事項
1.超過百萬級的文字最好切割為以10萬為單位的文字分配,多個程序執行。2.最好以守護程序執行,即在指令碼後加上 後台會一直執行該程序,但是不能關閉終端,一旦關閉終端,該程序也會掛掉。3.以nohup命令執行指令碼,可以一直在後台執行。phpstorm破解版安裝 附 指令碼處理中常用的分割,合併文字命...
shell指令碼的一些注意事項
1 shell指令碼的開頭必須先輸入 bin sh 或 bin bash 2 是乙個約定的標記,它告訴系統這個指令碼需要什麼直譯器來執行,即使用哪一種 shell。bin bash指明直譯器的具體位置。3 完成指令碼後,要使指令碼具有執行許可權 sudo chmod x test.sh 4 執行sh...
一些注意事項
0.解題思路 a.普通思路 b.遞迴 bfs dfs c.動態規劃 比遞迴快 d.雙指標 比for迴圈快 如 快慢指標方法 e.用棧 1.陣列初始化 int a new int 5 a 0 預設為0.二維陣列也一樣。boolean b new boolean 5 b 0 預設為false.strin...