С помощью DEFERRABLE INITIALLY IMMEDIATE
вы можете отложить ограничения по требованию, когда вам это нужно.
Это полезно, если вы обычно хотите проверить ограничения во время инструкции, но, например, пакетная загрузка хочет отложить проверку до момента фиксации.
Синтаксис, как отложить ограничения, различен для разных СУБД.
С NOT DEFERRABLE
вы никогда не будете способный отложить проверку до момента фиксации.
Ваш сценарий запущен . Он просто печатает в течение нескольких миллисекунд, а затем выходит из приглашения. Вы можете увидеть это, если вы настроите свой скрипт следующим образом:
print("hello world")
input('press enter to end.') # will await user input
Или, по крайней мере, это объяснит проблему с командной строкой, я думаю. Я не уверен, объясняет ли это ошибку IDLE ... нам могут понадобиться снимки экрана?