script解決方式可以參考D大的。
這邊另外提供解法給你參考
剛剛在S.O那邊幫你詢問
sql - No trigger to set column's default value from another column in the same table - Stack Overflow
假如想在DBMS端解決問題可以使用
CREATE TABLE MDCOND
([COND01] AS Convert(int,COND04) + Convert(int,COND05) , [COND02] varchar(5), [COND03] varchar(5), [COND04] varchar(5), [COND05] varchar(5))
;
insert into MDCOND (COND02,COND03,COND04,COND05) values ('123','456','78','12');
select * from MDCOND;
主要邏輯:
設置一個計算欄位,這個欄位是由cond04+cond05相加
insert資料時候添加COND02,COND03,COND04,COND05就好
也符合你要使用cond04+cond05來做PK的概念。
結果圖:
'COND04'+'COND05'
這段字串含有非整數字串 無法轉型成 int
整數
我猜你想要把 COND04
+COND05
的值當作 當作 COND01
的值
你可以考慮把插入 COND04
,COND05
值改成參數傳入
這個範例是使用SQL-Server
CREATE TABLE MDCOND(
COND01 INT,
COND02 VARCHAR(10),
COND03 VARCHAR(10),
COND04 VARCHAR(10),
COND05 VARCHAR(10)
);
DECLARE @COND04 VARCHAR(10) = '78'
DECLARE @COND05 VARCHAR(10) = '12'
INSERT INTO MDCOND (COND01,COND02,COND03,COND04,COND05)
VALUES ( (convert(int,@COND04+@COND05)) ,'123','456',@COND04,@COND05);
改寫成 VB
無法新增
請問哪裡有寫錯嗎?
謝謝
Protected Sub Button1_Click(sender As Object, e As System.EventArgs) Handles Button1.Click
SqlDataSource1.InsertCommand = "INSERT INTO MDCOND (COND01,COND02,COND03,COND04,COND05) " & _
"VALUES((convert(INT,@COND01)),@COND02,@COND03,@COND04,'1') "
SqlDataSource1.InsertParameters.Add("COND01", TXT_CONA02.Text + TXT_CONA04.Text)
SqlDataSource1.InsertParameters.Add("COND02", TXT_CONA02.Text)
SqlDataSource1.InsertParameters.Add("COND03", DropDownList1.SelectedValue.ToString)
SqlDataSource1.InsertParameters.Add("COND04", TXT_CONA04.Text)
Try
If SqlDataSource1.Insert() = 1 Then
CON_STATUS.Text = "成功!"
ClearTextBox(Page)
Else
CON_STATUS.Text = "新增失敗"
End If
Catch
CON_STATUS.Text = "<font style='color: #FF3300'>" + "新增失敗 " + "</font>"
End Try
End Sub
TXT_CONA02.Text + TXT_CONA04.Text
這字串是數字嗎?
不是數字不能轉換...
INSERT INTO MDCOND (COND01,COND02,COND03,COND04,COND05) VALUES ( (select COND04 +COND05 from xxxx where ...) ,'123','456','78','12');
錯誤的原因是插入時COND04和COND05都還沒有值
分兩段來解決
INSERT INTO MDCOND (COND01,COND02,COND03,COND04,COND05) VALUES(0 ,'123','456','78','12');
UPDATE MDCOND SET COND01=(convert(int,COND04+COND05));