[SQLITE] Jak napisać Trigger - pierwsza litera nazwiska duża

0

Chodzi mi o to, zeby kazda litera kazdego nazwiska w tabeli Osoby byla pisana duza litera ... Nie wiem, jak to zrobic - napisalem tylko zamiane na duze liter (calego nazwiska), ale nie o to mi chodzi ... np. Dla "ostrowski", powinno mi poprawić na "Ostrowski", a nie "OSTROWSKI" dzięki za pomoc ;) - uzywam bazy sqlite

create trigger duzaLitera before insert on Osoby 
	for each row 
		begin
			:new.nazwisko := upper(:new.nazwisko); 
		end;
0

W SQLite podobnie jak w każdej chyba bazie danych są funkcje systemowe. Jedną z takich funkcji jest SUBSTR która zwraca fragment napisu...

0

Takie cuś napisałem :

CREATE TRIGGER duzaLitera BEFORE INSERT ON Osoby 
        FOR each ROW 
                BEGIN
                        :NEW.nazwisko := (UPPER((:NEW.nazwisko, 1))+SUBSTRING(LOWER(:NEW.nazwisko), 2, LEN(:NEW.nazwisko)-1) );
                END;

i nie działa :O Wam działa na dowolnej tabeli?

0

Ten kod jest zły...

1

Ten kod jest dobry:

create trigger duzaLitera after insert on osoby
for each row
begin
  update osoby set nazwisko = ( upper(substr(new.nazwisko,1,1)) || lower(substr(new.nazwisko,2)) ) where osoby.id = new.id;
end

BTW: czego używasz, że pozwala na konstrukcję :new i :=?

1 użytkowników online, w tym zalogowanych: 0, gości: 1