///
CREATE TABLE livros(Codigo INT,Titulo TEXT,Autor INT,ISBN TEXT NOT NULL); CREATE TABLE autores(Nome TEXT,Codigo INT); CREATE VIEW view1 AS SELECT A.Codigo,A.Titulo,A.ISBN,A.Autor,B.Nome FROM livros A, autores B ON A.Autor = B.Codigo ORDER BY A.Codigo; CREATE TRIGGER tr_livros BEFORE INSERT ON livros FOR EACH ROW BEGIN SELECT CASE WHEN (NEW.Codigo IS NULL) OR (NEW.Titulo IS NULL) OR (NEW.Autor IS NULL) OR ((SELECT Codigo FROM livros WHERE Codigo = NEW.Codigo) IS NOT NULL) OR ((SELECT Codigo FROM autores WHERE Codigo = NEW.Autor) IS NULL) THEN RAISE(ABORT,"Dados invalidos") END; END; -- insert 1 INSERT INTO autores VALUES("Boris Pasternak",1); -- insert 2 INSERT INTO livros VALUES(1,"Doutor Jivago",1,"9788577990375"); -- insert 3 INSERT INTO autores VALUES("Margaret Mitchell",2); -- insert 4 INSERT INTO livros VALUES(1,"E o Tempo Levou",2,""); -- query view SELECT * FROM view1;
Sobre o código apresentado, considere:
I. O comando SELECT * FROM view1; exibirá informações sobre os dois livros inseridos durante a execução deste código com seus respectivos autores.
II. O trecho de SQL (SELECT Codigo FROM livros WHERE Codigo = NEW.Codigo) IS NOT NULL garante que o código do livro sendo inserido é único.
III. A cláusula BEFORE INSERT ON livros configura a trigger para ser executada antes de um insert ou update na tabela livros.
É correto o que consta em