Действительно ли это верно, что я не могу отредактировать триггер MySQL, я должен отбросить его и создать новый?

Вот простой юнит-тест для вашего класса.

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;

import javax.cache.Cache;
import java.lang.reflect.Field;

@RunWith(PowerMockRunner.class)
@PrepareForTest({SomeClass.class})
public class SomeClassTest {

    @Before
    public void setup() throws IllegalAccessException {
        Cache<String, Integer> cache = Mockito.mock(Cache.class);
        Mockito.when(cache.get("Language1")).thenReturn(1);

        Field field = PowerMockito.field(SomeClass.class, "cache");
        field.set(SomeClass.class, cache);
    }

    @Test
    public void should_return_1_when_Language1_is_the_input() throws Exception {
        Integer expectedResult = 1;
        Assert.assertEquals(expectedResult, SomeClass.getLanguageId("Language1"));
    }

    @Test
    public void should_return_null_when_input_is_null() throws Exception {
        Assert.assertNull(SomeClass.getLanguageId(null));
    }

    @Test (expected = Exception.class)
    public void should_throw_exception_when_unknown_language_is_input() throws Exception {
        SomeClass.getLanguageId("UnknownLanguage");
    }
}
5
задан cw84 4 April 2009 в 20:00
поделиться

2 ответа

Править: Да, это верно, что версии 5.n и 6.n MySQL 5 и 6 реализуют CREATE TRIGGER и DROP TRIGGER и ничто иное. Согласно этому ломтю документации Пост-ГРЭС, даже нет CREATE TRIGGER в SQL 92 поэтому считайте себя удачливыми иметь ТРИГГЕР вообще :-)

Документация плагина MySQL Visual Studio имеет:

Для изменения существующего триггера, дважды щелкают по узлу триггера, который Вы хотите изменить, или щелкнуть правой кнопкой по этому узлу и выбрать команду Alter Trigger из контекстного меню. Любая из команд открывает SQL Editor.

... который, кажется, делает то, что Вы хотите. Мое предположение, это - сахар GUI, и негласно Вы получаете a DROP CREATE.

До триггера для некоторых UPDATEs и не другие, SQL имеет точно один UPDATE на таблицу. Поместите IF пункт в начале Вашего UPDATE инициируйте так, чтобы Ваша логика - независимо от того, что Вы делаете в части из Вашего UPDATEs - только выполняется, когда Вы думаете, что это является соответствующим.

6
ответ дан 14 December 2019 в 04:47
поделиться

MySQL имеет ТРИГГЕР ЗАМЕНЫ, правильно?

Как заметка на полях.. Действительно ли это - проблема? Если Вы волнуетесь, что запросы выполняются промежуточное ОТБРАСЫВАНИЕ и СОЗДАЮТ, Вы могли бы всегда блокировать таблицу заранее.

2
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

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