• <menu id="ome2w"></menu>
  • <nav id="ome2w"><strong id="ome2w"></strong></nav>
    <menu id="ome2w"></menu>
  • <nav id="ome2w"></nav>
  • 咨詢電話:
    15628812133
    01
    2024/05

    在使用MySql自己定義的函數時報錯:This function has none of DETERMINISTIC......

    發布時間:2024-05-01 15:55:41
    發布者:已經寫了
    瀏覽量:
    0

    在之前處理數據庫查詢JSON數據UNICODE編碼的字符在查詢的結果轉換成中文的之后,因為查詢中處理需要寫很長得代碼來實現想要的結果,所以我就想著把這個過程寫成一個函數來簡化代碼,方便使用。

    那么就要介紹一下MYSQL的函數了,mysql的函數有兩種一種是存儲過程,另外一種就是函數,其中,函數(UDF)必須返回一個值。函數的返回值類型在創建函數時定義,并且函數的主體必須包含一個有效的返回語句。存儲過程可以沒有返回值,也可以返回多個值(通過輸出參數或結果集)。它們主要用于執行操作,而不是計算并返回一個值。

    函數可以從SQL語句的任何位置調用,就像在查詢中使用的內置函數(如CONCAT(), LENGTH()等)一樣。

    存儲過程通常通過CALL語句來調用,并且不能直接在SQL語句中作為表達式的一部分使用。

    今天在創建函數的時候,報了個錯This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled。

    報錯的原因是啥呢,是因為數據庫開啟了bin-log, 我們就需要指定函數的特性DETERMINISTIC、NO SQL或READS SQL DATA這三個特性之一。

    以下是這三個特性的簡要說明:

    DETERMINISTIC:表明函數對于相同的輸入總是返回相同的輸出。如果函數是確定的,那么MySQL可以安全地將其結果緩存起來,并在二進制日志中記錄函數名和其參數,而不是實際的結果值。

    NO SQL:表明函數不包含任何SQL語句。如果函數不包含SQL語句,那么它不會修改數據庫中的數據,也不會受到并發執行的其他事務的影響。

    READS SQL DATA:表明函數包含讀取數據的SQL語句,但不包含修改數據的語句。這意味著函數可能會讀取數據庫中的值,但不會修改它們。

    在使用MySql自己定義的函數時報錯:This function has none of DETERMINISTIC......

    如果不想這樣的話也可以在配置文件中配置log_bin_trust_function_creators=1來關閉。

    也可以通過執行sql語句:SET GLOBAL log_bin_trust_function_creators = 1。

    關鍵詞:
    返回列表
    久久久久精品国产亚洲AV色欲|久久福利无码一区二区三区|久久AⅤ天堂Av无码AV|精品视频在线观看免费
  • <menu id="ome2w"></menu>
  • <nav id="ome2w"><strong id="ome2w"></strong></nav>
    <menu id="ome2w"></menu>
  • <nav id="ome2w"></nav>