Mam tabelę zawierającą adres URL i ciąg reprezentujący jego parametry. Problem polega na tym, że chcę, by URL i parametrstring były unikatowym ograniczeniem dla tabeli - aka żadne wpisy nie mogą mieć tego samego adresu url i parametru. Łańcuch parametrów może mieć dowolną długość (dłuższą niż 800 bajtów, co jest maksymalną długością klucza MySql, więc nie mogę używać Unique (adresu URL, parametrów), ponieważ powoduje błąd ...).Jak przerwać operację WSTAW w wyzwalaczu MySql?
Myślałem o użyciu wyzwalaczy, aby to zrobić, ale jak mam wyjątek/podnieść błąd, jeśli spust odkrywa wkładka ma zamiar wstawić duplikat wpisu? Wyobrażam sobie, że chciałbym mieć wyrzucony MySqlException jak MySql ze zduplikowanymi kluczami głównymi itp., Więc mogę go złapać w moim C# code.
Mam dwie sztuki w spustu Potrzebuję uzyskać pomoc z: ... Przerwać wyrzucać wyjątek do C# ... Jak rzucić wyjątek itp do C#? ... Pozwól wstawić ... - jak mogę zezwolić na wstawianie, jeśli nie ma duplikatu wpisu?
Herezje kod wyzwalacza:
CREATE TRIGGER urls_check_duplicates
BEFORE INSERT ON urls
FOR EACH ROW
BEGIN
DECLARE num_rows INTEGER;
SELECT COUNT(*)
INTO num_rows
FROM urls
WHERE url = NEW.url AND params = NEW.params;
IF num_rows > 0 THEN
... ABORT/throw exception to C# ...
ELSE
... Allow insert ...
END
z MySQL 5.5, ewentualnie wcześniej, można użyć sygnałów [zobacz moją odpowiedź tutaj] [1] [1]: http://stackoverflow.com/questions/24/throw-error- in-mysql-trigger/7189396 # 7189396 – RuiDC