Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Batasan Kolom Mysql karena tidak kosong/wajib

Saya berasumsi Anda tidak ingin kosong (string kosong, sebagai lawan dari NULL ) nilai yang akan diizinkan dalam tabel juga.

Biasanya, itulah yang CHECK kendala untuk. Anda melakukan sesuatu seperti

CREATE TABLE
        mytable
        (
        myfield NOT NULL VARCHAR(200),
        CHECK(myfield > '')
        )

Namun, MySQL mem-parsing kendala tetapi tidak menegakkannya. Anda masih diperbolehkan memasukkan nilai kosong.

Untuk mengatasinya, buat BEFORE INSERT memicu dan menaikkan sinyal pada upaya untuk memasukkan nilai kosong:

CREATE TRIGGER
        tr_mytable_bi
BEFORE INSERT
ON      mytable
FOR EACH ROW
BEGIN
        IF NEW.myfield = '' THEN
                SIGNAL SQLSTATE '45001' SET MESSAGE_TEXT = 'Blank value on mytable.myfield';
        END IF;
END;

Lakukan hal yang sama pada BEFORE UPDATE jika Anda ingin melarang pembaruan ke nilai kosong juga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tidak dapat membuka JPA EntityManager untuk transaksi; pengecualian bersarang adalah javax.persistence.PersistenceException

  2. Bantuan dengan payment_status PayPal Dikembalikan Dikembalikan IPN Dikembalikan Sebagian

  3. kesalahan konektivitas php MySql

  4. Pernyataan SELECT yang digunakan memiliki jumlah kolom yang berbeda (REDUX!!)

  5. Ekspor data Google Bagan (tabel) saya ke excel atau csv