Triggery

0

Mam do was pytanko macie może pomysł jak poprawić ten kod Triggera , aby zabraniał dodawać Państwa bo bazy danych , które zaczyna się od litery x ?

Create Trigger NieDodajePanstwa
before insert 
on Panstwa
for each row
begin
if(new.Panstwo like 'x%' or new.Panstwo like 'X%') then
SIGNAL SQLSTATE '45000'
   SET MESSAGE_TEXT = 'Nie możesz dodać Panstwa zaczynającego się od litery X';
   END IF;
   END 

Rzeźbię w tym gnoju , szukam i kurde pustka

0

Efekt kodu powyżej

Msg 102, Level 15, State 1, Procedure NieDodajePanstwa, Line 2 [Batch Start Line 151]
Incorrect syntax near 'before'.
Msg 156, Level 15, State 1, Procedure NieDodajePanstwa, Line 6 [Batch Start Line 151]
Incorrect syntax near the keyword 'then'.
0

Baza Wgląda w sposób następujący:

Tabela Panstwa
PanstwoID
NazwaPanstwa
LiczaLudnosci
Stolica
PrezydentID

TabelaPrezydent
PrezydentID
ImiePrezydenta
NazwiskoPrezydenta
SamochodID

TabelaSamochod
*SamochodID
Marka
RokProdukcji
Spalania
*
I chciałbym miec trigger aby do tabeli Panstwa nie wprowadzac panstwa zaczynajacego sie od litrery X , nie chce tego robic Coinstrant bo nie :)

0
Create Trigger NieDodajePanstwa
on Panstwo
Instead of insert
as
begin
 insert into Panstwo
 select *from Panstwo
 where exists (select 1 where NazwaPanstwa like 'x%' or NazwaPanstwa like 'X%')
end

hmm mam coś takiego , jesli nazwa panstwa zaczyna się od 1 wstawia 1 , i teraz jak to zrobic , aby blokował dodawanie wszystkich rekordow które mają z WHERE 1

0

Tak tez nie działa

Create Trigger NieDodajePanstwa
on Panstwa
for instead of insert
for each row
begin
if(new.Panstwo like 'x%' or new.Panstwo like 'X%') then
SIGNAL SQLSTATE '45000'
   SET MESSAGE_TEXT = 'Nie możesz dodać Panstwa zaczynającego się od litery X';
   END IF;
   END
0

Koniecznie musisz mieć trigger? Jak nie to użyj CHECKa:

CREATE TABLE Panstwo (
    Panstwo varchar(200) CHECK (upper(Panstwo) not like 'X%')
);

insert into Panstwo values('albania')
insert into Panstwo values('xalbania')
0

Napiałem triggera , ktory zlicza ilosc dodanych rekordow , ktore spełniają warunek w where :

create trigger PoprawnoscNazwyPanstwa
on Panstwo
for insert
as
if exists (select * from Panstwo where NazwaPanstwa like 'x%' or NazwaPanstwa like 'X%' )
begin
	declare @count tinyint
	set @count=(select count(*) from Panstwo where NazwaPanstwa like 'x%' or NazwaPanstwa like 'X%')
	print cast(@count as varchar(3))+'Niepoprawna nazwa Panstwa zostala dodana do bazy'
end
go
0
Create Trigger NieDodajePanstwa
on Panstwa
for insert as
begin
if EXISTS(  select 1 from  inserted where Panstwo like 'x%' or Panstwo like 'X%' )
begin
RAISERROR ('Nie możesz dodać Panstwa zaczynającego się od litery X',10,1)
        ROLLBACK TRANSACTION
END
end
0

create trigger NieDodajePanstwa
on Panstwo
after insert
as
begin
if( NazwaPanstwa like 'x%' or NazwaPanstwa like 'X%')
begin
print 'Nie mozesz dodac panstwa na litere x'
rollback
end
end

haha wpadliśmy na coś podobnego, tylko że moj warunek jest jaki jest xD

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