Существует ли путь в MySQL для инвертирования булева поля с одним запросом?

Лучший способ получить правильный оператор импорта для фактического значения из ThirdPartySDK - это рефакторинг скрипта в модуль, который экспортирует это значение. Следующий фрагмент позволяет использовать оператор импорта, как показано:

export const ThirdPartySDK = {
    foo() { console.log('Doing foo'); }
};

Для больших библиотек рефакторинг не всегда так прост, поэтому я вижу 2 подхода, которые не требуют слишком много рефакторинга:


1. Экспортируйте переменную ThirdPartySDK

Вы можете просто сделать модуль из файла IIFE, экспортировав текущую переменную IThirdPartySDK (возвращаемую IIFE), а затем импортировать ее, как показано: [ 1120]

export const ThirdPartySDK = (function() {
    var _export = {};

    // Add some methods to export

    return _export;
})();

Обратите внимание, что если вы хотите получить некоторую полезную информацию о форме ThirdPartySDK, вам нужно будет добавить аннотацию типа в объявление const, и если SomeType (см. Ниже) делает еще не существует, вам придется написать это самостоятельно:

export const ThirdPartySDK: SomeType = (function() {
// ...

В этот момент Typescript начнет жаловаться на то, что выражение IIFE не может быть присвоено SomeType; быстрое «решение», чтобы сказать машинописи, что она притворяется, выражение оценивается как значение типа SomeType с использованием ключевого слова as:

export const ThirdPartySDK: SomeType = (function() {
    // ...
})() as SomeType;

2. Сохраните тег

4 ответа

UPDATE users SET `authorised` = IF (`authorised`, 0, 1)
30
ответ дан 29 November 2019 в 00:57
поделиться
UPDATE `users` SET `authorised` = NOT `authorised` WHERE id = 2

Этот запрос также работает для отмены поля, и он более встроен в логический синтаксис.

32
ответ дан 29 November 2019 в 00:57
поделиться

Существует несколько способов сделать это, вот простой:

UPDATE users SET authorised = ABS(authorised - 1) WHERE id = 2;
4
ответ дан 29 November 2019 в 00:57
поделиться

Также возможно использовать XOR, если ваше «логическое» поле реализовано как TINYINT:

UPDATE users SET authorised = authorised XOR 1 WHERE id = 2;

Это установит для «authorized» значение 0, если в данный момент 1, и 1, если в данный момент 0. Это также обнулит все ненулевые значения, так что это идеальное решение, если вы (как и я) используете несколько положительных значений для отражения различных уровней «вкл», но всегда должны возвращаться к 0, когда «выключено».

4
ответ дан 29 November 2019 в 00:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: