Mysql 具有现有表的SQL触发器
我有一个触发器的SQL问题,我无法解决,我想为我的数据库做一个坏字过滤器。我做了一个很好用的触发器:Mysql 具有现有表的SQL触发器,mysql,sql,triggers,Mysql,Sql,Triggers,我有一个触发器的SQL问题,我无法解决,我想为我的数据库做一个坏字过滤器。我做了一个很好用的触发器: USE dbi353348 GO Create TRIGGER trChangeAbusiveWordzondertable ON Post AFTER INSERT AS DECLARE @Posttekst varchar(300); DECLARE @AccountID int; DECLARE @PostID int; SELECT @Posttek
USE dbi353348
GO
Create TRIGGER trChangeAbusiveWordzondertable
ON Post
AFTER INSERT
AS
DECLARE @Posttekst varchar(300);
DECLARE @AccountID int;
DECLARE @PostID int;
SELECT @Posttekst=i.Post FROM inserted i;
SELECT @AccountID=i.Account_ID FROM inserted i;
SELECT @PostID=i.Post_ID FROM inserted i;
BEGIN
DECLARE @AbusiveWords TABLE(ID INT,Word VARCHAR(10))
INSERT INTO @AbusiveWords (ID,Word) values (1,'kanker'),(2,'tyfus'),(3,'tering'),(4,'kut'),(5,'lul'),(6,'eikel'),(7,'klootzak'),(8,'hoer'),(9,'flikker'),(10,'mongool'),(11,'slet'),(12,'bitch');
UPDATE @AbusiveWords
SET @Posttekst=REPLACE(@Posttekst,Word,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Word,'A','#'),'E','%'),'I','$'),'O','*'),'U','@'))
UPDATE Post
SET Post = @Posttekst
WHERE Post_ID = @PostID
END
现在,我想从现有的表中选择坏单词,从我的数据库中选择“滥用单词”。已创建此触发器,但不会更改任何内容:
Use dbi353348
GO
Create TRIGGER trChangeAbusiveWord
ON Post
AFTER INSERT
AS
DECLARE @Posttekst varchar(300);
DECLARE @AccountID int;
DECLARE @PostID int;
SELECT @Posttekst=i.Post FROM inserted i;
SELECT @AccountID=i.Account_ID FROM inserted i;
SELECT @PostID=i.Post_ID FROM inserted i;
BEGIN
UPDATE AbusiveWords
SET @Posttekst=REPLACE(@Posttekst,Word,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Word,'A','#'),'E','%'),'I','$'),'O','*'),'U','@'))
UPDATE Post
SET Post = @Posttekst
WHERE Post_ID = @PostID
END
我确认错误在update语句中的某个地方 关于更新@Posttekst的问题,该字段应该在哪里
UPDATE AbusiveWords
SET WORD=REPLACE(@Posttekst,Word,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(Word,'A','#'),'E','%'),'I','$'),'O','*'),'U','@'))
应该更新WORD,而不是一个变量@postteskt,它会将AbusiveWords表中的所有单词强制更改为插入的单词,并且不会更改另一个Post表中的坏单词。我是否遗漏了什么?这只是为了强调更新问题。所以,问题是,为什么需要更新AbusiveWords表?我需要更改插入的坏单词中的一些字符,以便以后可以在另一个表中更改它们,并在更新时“发布”。有了一个临时表,我可以很容易地做到这一点,但是我不能将单词添加到坏单词过滤器中。我认为这是错误的做法