Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Khóa ngoại khi xóa đặt null trong trường không null

Nếu bạn đặt ON DELETE SET NULL đối với khóa ngoại của bạn thì nó sẽ không cho phép bạn đặt trường là NOT NULL .

Vì vậy, bạn sẽ không thể tạo hoặc thay đổi bảng có cột là NOT NULLON DELETE SET NULL trên CountryId

Khi tôi chạy các câu lệnh dưới đây:

CREATE TABLE `country` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(100) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ;

CREATE TABLE `city` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `countryId` int(10) unsigned DEFAULT NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_country` (`countryId`),
  CONSTRAINT `FK_country` FOREIGN KEY (`countryId`) REFERENCES `country` (`id`) ON DELETE SET NULL ON UPDATE SET NULL
);

Và tôi gặp lỗi trong MySQL 5.5 là:

Schema Creation Failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOT NULL,
  PRIMARY KEY (`id`),
  KEY `FK_country` (`countryId`),
  CONSTRAINT `' at line 4: 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các ký hiệu tôi nên biết đối với SQL injection

  2. Khóa chính của cơ sở dữ liệu phải là số nguyên?

  3. Làm cách nào để thay đổi giá gốc trên trang sản phẩm OpenCart?

  4. Các thủ tục được lưu trữ trong MySQL không hoạt động với SELECT (câu hỏi cơ bản)

  5. LIMIT 1 có được khuyến nghị cho truy vấn trong đó điều kiện WHERE dựa trên PK không?