1. 程式人生 > >mysql sp_add_Index 先判斷有沒有索引 沒有就新增

mysql sp_add_Index 先判斷有沒有索引 沒有就新增

DELIMITER $$
CREATE  PROCEDURE `sp_add_Index`(
    IN p_tablename VARCHAR (100),  
    IN p_indexType VARCHAR(100),
    IN p_indexcolumnList VARCHAR (200),
    IN p_idxname VARCHAR(70)
)
BEGIN  

-- CALL `sp_add_Index`('sys_resource','unique','code','');
-- CALL `sp_add_Index`('sys_resource','index','parent_code','');
    DECLARE p_dbname VARCHAR(50);
    SET @p_dbname = DATABASE();
    SET @p_idxname = p_idxname; -- 索引名不能超過64位元組
    
    CASE p_indexType 
    WHEN 'primary' THEN
    SET @p_idxname = 'primary';
    SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', 'primary key(', p_indexcolumnList ,');');
    WHEN 'unique' THEN
    IF LENGTH(@p_idxname) = 0 THEN
SET @p_idxname = CONCAT('uni_idx_',p_tablename,'_',REPLACE(p_indexcolumnList,',','_'));
END IF;
      SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', p_indexType,' ',@p_idxname ,'(', p_indexcolumnList ,');');
    ELSE
    IF LENGTH(@p_idxname) = 0 THEN
SET @p_idxname = CONCAT('idx_',p_tablename,'_',REPLACE(p_indexcolumnList,',','_'));
END IF;
      SET @add_index = CONCAT('ALTER TABLE ', p_tablename, ' ADD ', p_indexType,' ',@p_idxname ,'(', p_indexcolumnList ,');');
     END CASE;
    SELECT  
COUNT(*) INTO @cnt  
    FROM  
information_schema.statistics  
    WHERE  
TABLE_SCHEMA = @p_dbname  
AND table_name = p_tablename  
AND index_name = @p_idxname;  
IF @cnt = 0 THEN  
PREPARE stmt FROM @add_index;   EXECUTE stmt; 
END IF;
END$$


DELIMITER ;

相關推薦

mysql sp_add_Index 判斷沒有索引 沒有新增

DELIMITER $$ CREATE  PROCEDURE `sp_add_Index`(     IN p_tablename VARCHAR (100),       IN p_indexType VARCHAR(100),     IN p_indexcolumnLi

jQuery如何判斷是否擁有某屬性以及新增移除(判斷沒有)某屬性

如果id為name的元素沒有readonly屬性他就會返回undefined,有就直接返回屬性值可以藉此來判斷 $("#name").attr("readonly")==undefined if($("#name").attr("readonly")==undefined){ //doSome

android 判斷 沒有網路 ,簡單實現

對應一個按鈕 ,點 public class WlActivity extends AppCompatActivity { Button btn; @Override protected void onCreate(Bundle savedInstanceState) {

JavaScript判斷沒有

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http:/

專案實戰:二、判斷沒有

public static Network getResault(FragmentActivity activity) {   //定義一個布林型別變數,用來返回到底有沒有網路的結果  Boolean resault = false;   //獲取網路連線管理物件 Co

判斷沒有關注公眾號

微擎沒有關注公眾號獲取頭像暱稱資訊          if ($_W['fans']['follow'] == 0){//不用關注  借用獲取暱稱和頭像if ($_W['account']['lev

在SqlServer裡面沒有索引的情況下 where子句的條件順序對查詢效率影響嗎?

 在沒有建立索引的情況下 在不建立索引的情況下,where子句的條件順序,對查詢結果優化作用不明顯 那麼,就只能通過索引的辦法了 SQLServer查詢分析器不會自動優化嗎? 應該跟VS的編譯器一樣,

MySQL修改最大連接數,沒有my.ini文件,只有my-default,這怎麽改呀?

con www and remove ota sql_mode option sub chan # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.6/e

mysql查一張表哪些索引

col part ble tab comm 索引 pack comment key 可以用這個命令: show index from table_name; 得到輸出: +------------------+------------+------------+----

display為inline-block的元素內容和沒有內容情況下高度不一致的問題

是我 img 技術分享 ima class 一個 ott ack com 這兩天發現一個問題,就是display為inline-block的元素有內容和沒有內容情況下高度不一致,雖然不會出現元素中沒內容的情況,但是我還是決定必須解決這個問題,可能我有一些輕微的強迫癥。

Python中self和沒有self的問題

今天在練習敲程式碼的時候遇到一個問題就是關於self!!! 教材中定義方法時沒有加self,而我自己按照平時的套路敲的時候仍然敲了self,後面再照著教材中去呼叫該方法時報錯,如下: LoginPage().test_user_login(driver,username,password

為什麼你建立的資料庫索引沒有生效?

幾乎所有的小夥伴都可以隨口說幾句關於建立索引的優缺點,也知道什麼時候建立索引能夠提高我們的查詢效能,什麼時候索引會更新,但是你有沒有注意到,即使你設定了索引,有些時候索引他是不會生效的!這不僅考察了大家對索引的瞭解程度,還要讓大家在使用的時候能夠正確的使用。以下介紹了一些可能會造成索引失效的特殊情況,希望大家

SQL實現沒有這條資料新增這條資料修改

方法一:insert into on duplicate key update  舉個例子,欄位a被定義為UNIQUE,並且原資料庫表table中已存在記錄(2,2,9)和(3,2,1),如果插入記錄的a值與原有記錄重複,則更新原有記錄,否則插入新行: INSERT INTO

啟動 MySQL:服務無法啟動,服務沒有報告任何錯誤 - 已解決

下載mysql 8.0.13的壓縮包進行安裝時候報錯,錯誤如下: 報錯 解決辦法 在根目錄放置一個my.ini檔案(my開頭的ini檔案),檔案內容為配置資訊,配置內容如下: [mysql] # 設定mysql客戶端預設字符集 default-character-

mysql中or和in的效率問題 (索引差別很大o(n)/log(n))

mysql中or和in的效率問題        在網上一直看到的是or和in的效率沒啥區別,一直也感覺是這樣,前幾天剛好在看《mysql資料庫開發的36條軍規》的文章,裡面提到了or和in的效率問題,文中提到or的效率為O(n),而in的效率

結構體沒有過載==,不能判斷相等!!沒有過載=,可以賦值

struct stStudent { int num; wstring name; wstring level; bool isTwo; };自定義的結構體,沒有過載operator==,是不能進行等於判斷的。沒有過載operator=,可以進行賦值操作 stStud

DedeCms織夢縮圖則顯示,沒有則顯示自定義的隨機圖片

百度霸屏推廣在對企業站進行改版時,發現大部分企業網站的文章當初新增時沒有圖片,改版後的文章列表頁面呼叫了縮圖,織夢預設的話是沒有縮圖就顯示自定義的那張defaultpic.gif,這樣的話列表頁的縮圖就

發現mysql一個表可以幾個唯一索引

mysql一個表可以有多個唯一索引。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該用關鍵字UNIQUE把它定義為一個唯一索引。這麼做的好處:一是簡化了MySQL對這個索引的管理工作,這個索引也因此而變得更有效率。二是MySQL會在有新記錄插入

MySql 5.7.20安裝和服務沒有報告任何錯誤的解決方法

1. 下載Mysql官方:http://www.mysql.com→downloads→選社群版本MySQL Community Edition(GPL)→點選Community(GPL)Down

使用springmvc 接收上傳圖片,在 手機 ios 上,圖片上傳不報錯, 沒有報下面這個錯誤,然後在pc端跟安卓手機上不會這個錯誤,這是為什麼呢?

七月 18, 2018 4:04:22 下午 org.apache.catalina.core.StandardWrapperValve invoke 嚴重: Servlet.service() for servlet [springMVC] in context with