king
2020-06-02 a181fc113d024ed34d6b488c65882961bd1de3f4
src/utils/utils.js
@@ -67,10 +67,10 @@
      {key: 'alter', reg: /(^|\s)alter\s/ig},
      {key: 'truncate', reg: /(^|\s)truncate\s/ig},
      {key: 'if', reg: /(^|\s)if\s/ig},
      {key: 'exec', reg: /exec/ig},
      {key: 'OBJECT', reg: /object/ig},
      {key: 'sys.', reg: /sys\./ig},
      {key: 'kill', reg: /kill/ig}
      {key: 'exec', reg: /(^|\s)exec(\s|\()/ig},
      {key: 'OBJECT', reg: /(^|\s)object(\s|\()/ig},
      {key: 'sys.', reg: /(^|\s)sys\./ig},
      {key: 'kill', reg: /(^|\s)kill\s/ig}
    ]
    if (type === 'customscript') {
@@ -1051,10 +1051,15 @@
        datasource = '(' + datasource + ') tb'
      }
      let _ID = '=@ID@'
      if (btn.Ot === 'requiredOnce') {
        _ID = ' in (select ID from  dbo.SplitComma(@ID@))'
      }
      _sql += `
        /* 失效验证 */
        select @tbid='', @ErrorCode='',@retmsg=''
        select @tbid=${primaryKey} from ${datasource} where ${primaryKey} ='${primaryId}'
        select @tbid=${primaryKey} from ${datasource} where ${primaryKey} ${_ID}
        If @tbid=''
        Begin
          select @ErrorCode='E',@retmsg='数据已失效'
@@ -1130,18 +1135,20 @@
      }
      verify.uniques.forEach(item => {
        console.log(item)
        // `有同类数据验证:
        // 与唯一性验证一样,可以选几个字段
        // Set @tbid=’’
        let _primaryKey = item.field.split(',').includes(primaryKey) ? '' : ',' + primaryKey
        _sql += `
        /* 同类数据验证 */
        Set @tbid=''
        Select top 1 @tbid='X' from (select ${item.field}${_primaryKey},1 as n from ${datasource} ) tb  inner join (select ID from  dbo.SplitComma(@ID@)) sp on tb.${primaryKey}=sp.ID group by ${item.field} having sum(n)>1
        
        // Select top 1 @tbid=’X’ from (select 多个字段逗号分隔,主键,1 an n from 数据源 ) tb  inner join (select ID from  dbo.SplitComma(@ID@)) sp on tb.主键=sp.ID group by 多个字段逗号分隔 having sum(n)>1
        // If @tbid!=’’
        // Begin
        //     Set @errorcode=’E’ ,Set @remsg=’多个字段逗号分隔 值不唯一’ goto aaa
        // end
        // `
        If @tbid!=''
        Begin
          Set @ErrorCode='E' Set @retmsg='${item.fieldlabel} 值不唯一'
          goto aaa
        end
        `
      })
    }