@@ -524,10 +524,70 @@ END;`,
524524 {types.OkResult {RowsAffected : 1 }},
525525 },
526526 },
527+ {
528+ Query : "INSERT INTO t (i, j) VALUES (2, null);" ,
529+ Expected : []sql.Row {
530+ {types.OkResult {RowsAffected : 1 }},
531+ },
532+ },
527533 {
528534 Query : "SELECT * FROM t;" ,
529535 Expected : []sql.Row {
530536 {1 , 10 },
537+ {2 , 10 },
538+ },
539+ },
540+ },
541+ },
542+ {
543+ Name : "not null column with trigger that sets null should error" ,
544+ SetUpScript : []string {
545+ "CREATE TABLE t (i INT PRIMARY KEY, j INT NOT NULL);" ,
546+ `
547+ CREATE TRIGGER trig BEFORE INSERT ON t
548+ FOR EACH ROW
549+ BEGIN
550+ SET new.j = null;
551+ END;` ,
552+ },
553+ Assertions : []ScriptTestAssertion {
554+ {
555+ Query : "INSERT INTO t (i) VALUES (1);" ,
556+ ExpectedErr : sql .ErrInsertIntoNonNullableProvidedNull ,
557+ },
558+ {
559+ Query : "INSERT INTO t (i, j) VALUES (1, 2);" ,
560+ ExpectedErr : sql .ErrInsertIntoNonNullableProvidedNull ,
561+ },
562+ },
563+ },
564+ {
565+ Name : "not null column with before insert trigger should error" ,
566+ SetUpScript : []string {
567+ "CREATE TABLE t (i INT PRIMARY KEY, j INT NOT NULL);" ,
568+ `
569+ CREATE TRIGGER trig BEFORE INSERT ON t
570+ FOR EACH ROW
571+ BEGIN
572+ SET new.i = 10 * new.i;
573+ END;` ,
574+ },
575+ Assertions : []ScriptTestAssertion {
576+ {
577+ Query : "INSERT INTO t (i) VALUES (1);" ,
578+ // TODO: should be sql.ErrInsertIntoNonNullableDefaultNullColumn
579+ ExpectedErr : sql .ErrInsertIntoNonNullableProvidedNull ,
580+ },
581+ {
582+ Query : "INSERT INTO t (i, j) VALUES (1, 2);" ,
583+ Expected : []sql.Row {
584+ {types .NewOkResult (1 )},
585+ },
586+ },
587+ {
588+ Query : "SELECT * FROM t;" ,
589+ Expected : []sql.Row {
590+ {10 , 2 },
531591 },
532592 },
533593 },
0 commit comments