If we want to keep kids safe, we need to deal with facts, not wishful thinking.
Banning guns didn't keep the kids in Bath Township, Michigan safe. That attacker used explosives, and being on the school board he had plenty of access.
There are plenty of ways to murder unsuspecting people. That won't change.
And as much as I hate to say it, there may be no perfect solution. Our job is to minimize suffering, not eliminate it. Pushing hard for an impossible goal doesn't help things. Rather, it often makes things worse.
But agreeing with Hajduk, I think we should get rid of public schools. In fact, whereas an educated public is necessary to the health of a republic, I would forbid government schools altogether. Maybe allow funding to follow students wherever they choose to go. I think smaller schools are a much better idea for most students anyway, especially for the early grades, as these foster the sort of community that minimizes bullying and provides support for those who need it. I also agree with jd that the kids should have the means to defend themselves. But we should also be realistic: look at the numbers and there is nowhere that kids are safer than at school. There is no such thing as 100% security, and basing our liberties on an impossible to achieve standard seems a rather foolish thing to do.
If we want to make kids feel safer, stop spending so much time talking about such incredibly rare events on the news. They aren't nearly as worried about dying in a traffic accident on the way to or from school, yet that is a far greater risk.